aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2006-10-16 12:32:14 +0000
committerLev Walkin <vlm@lionet.info>2006-10-16 12:32:14 +0000
commit2ddd3083ade11f562b3b548d35060cd8899649cb (patch)
tree0becfd19791daa2752a29119f1d0e924fef03ba0
parented9019a9e442f7bf59e1186a4c20c04cfded21a8 (diff)
allowing null buffer
-rw-r--r--skeletons/OCTET_STRING.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/skeletons/OCTET_STRING.c b/skeletons/OCTET_STRING.c
index a9747c4d..52c3d3e4 100644
--- a/skeletons/OCTET_STRING.c
+++ b/skeletons/OCTET_STRING.c
@@ -595,7 +595,7 @@ OCTET_STRING_encode_xer(asn_TYPE_descriptor_t *td, void *sptr,
uint8_t *end;
size_t i;
- if(!st || !st->buf)
+ if(!st || (!st->buf && st->size))
_ASN_ENCODE_FAILED;
er.encoded = 0;
@@ -751,7 +751,7 @@ OCTET_STRING_encode_xer_utf8(asn_TYPE_descriptor_t *td, void *sptr,
(void)ilevel; /* Unused argument */
(void)flags; /* Unused argument */
- if(!st || !st->buf)
+ if(!st || (!st->buf && st->size))
_ASN_ENCODE_FAILED;
buf = st->buf;
@@ -1433,7 +1433,7 @@ OCTET_STRING_encode_uper(asn_TYPE_descriptor_t *td,
int squeeze = 0;
int ret;
- if(!st || !st->buf)
+ if(!st || (!st->buf && st->size))
_ASN_ENCODE_FAILED;
if(unit_bits == 1) {
@@ -1544,7 +1544,8 @@ OCTET_STRING_print(asn_TYPE_descriptor_t *td, const void *sptr, int ilevel,
(void)td; /* Unused argument */
- if(!st || !st->buf) return (cb("<absent>", 8, app_key) < 0) ? -1 : 0;
+ if(!st || (!st->buf && st->size))
+ return (cb("<absent>", 8, app_key) < 0) ? -1 : 0;
/*
* Dump the contents of the buffer in hexadecimal.
@@ -1580,7 +1581,7 @@ OCTET_STRING_print_utf8(asn_TYPE_descriptor_t *td, const void *sptr,
(void)td; /* Unused argument */
(void)ilevel; /* Unused argument */
- if(st && st->buf) {
+ if(st && (st->buf || !st->size)) {
return (cb(st->buf, st->size, app_key) < 0) ? -1 : 0;
} else {
return (cb("<absent>", 8, app_key) < 0) ? -1 : 0;
@@ -1604,6 +1605,7 @@ OCTET_STRING_free(asn_TYPE_descriptor_t *td, void *sptr, int contents_only) {
if(st->buf) {
FREEMEM(st->buf);
+ st->buf = 0;
}
/*