From c3a54c9e9e1aedc6ed0ed619106208f859f61b0c Mon Sep 17 00:00:00 2001 From: "Andras 1. Toth" Date: Fri, 16 Aug 2019 11:11:14 +0200 Subject: [PATCH] OCTET STRING packing issue fix Change-Id: If07d7ae6823fa0e9647176a04e3c141ebedf236c Signed-off-by: Andras 1. Toth --- skeletons/OCTET_STRING.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/skeletons/OCTET_STRING.c b/skeletons/OCTET_STRING.c index 432ce5a..ae34c96 100644 --- a/skeletons/OCTET_STRING.c +++ b/skeletons/OCTET_STRING.c @@ -157,7 +157,7 @@ OS__add_stack_el(struct _stack *st) { nel = (struct _stack_el *)CALLOC(1, sizeof(struct _stack_el)); if(nel == NULL) return NULL; - + if(st->tail) { /* Increase a subcontainment depth */ nel->cont_level = st->tail->cont_level + 1; @@ -745,7 +745,7 @@ OCTET_STRING__handle_control_chars(void *struct_ptr, const void *chunk_buf, size return 0; } } - + return -1; /* No, it's not */ } @@ -1956,7 +1956,9 @@ OCTET_STRING_encode_aper(const asn_TYPE_descriptor_t *td, ret = aper_put_length(po, csiz->upper_bound - csiz->lower_bound + 1, sizeinunits - csiz->lower_bound); if(ret) ASN__ENCODE_FAILED; } - if (st->size > 2) { /* X.691 #16 NOTE 1 */ + /* EB MOD + AFAIU if lb != ub it is aligned whatever the number of bits */ + if ((st->size > 2) || (csiz->lower_bound != csiz->upper_bound)) { /* X.691 #16.11 */ if (aper_put_align(po) < 0) ASN__ENCODE_FAILED; } -- 2.16.6