prohibit encoding universalstring of non-modulo-multiplier size
diff --git a/skeletons/OCTET_STRING.c b/skeletons/OCTET_STRING.c
index 9d6bc9f..c1bc88f 100644
--- a/skeletons/OCTET_STRING.c
+++ b/skeletons/OCTET_STRING.c
@@ -1572,14 +1572,22 @@
if(cval->flags & APC_CONSTRAINED)
unit_bits = cval->range_bits;
bpc = OS__BPC_U16;
- sizeinunits = st->size / 2;
+ sizeinunits = st->size >> 1;
+ if(st->size & 1) {
+ ASN_DEBUG("%s string size is not modulo 2", td->name);
+ ASN__ENCODE_FAILED;
+ }
break;
case ASN_OSUBV_U32:
canonical_unit_bits = unit_bits = 32;
if(cval->flags & APC_CONSTRAINED)
unit_bits = cval->range_bits;
bpc = OS__BPC_U32;
- sizeinunits = st->size / 4;
+ sizeinunits = st->size >> 2;
+ if(st->size & 3) {
+ ASN_DEBUG("%s string size is not modulo 4", td->name);
+ ASN__ENCODE_FAILED;
+ }
break;
}
@@ -1599,8 +1607,9 @@
csiz = &asn_DEF_OCTET_STRING_constraints.size;
unit_bits = canonical_unit_bits;
inext = 1;
- } else
+ } else {
ASN__ENCODE_FAILED;
+ }
}
} else {
inext = 0;