Commit 806b0bb1 authored by Lev Walkin's avatar Lev Walkin

prohibit extra data after recognized body

parent 8b8a741e
...@@ -311,6 +311,7 @@ INTEGER__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chun ...@@ -311,6 +311,7 @@ INTEGER__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chun
ST_SKIPSPACE, ST_SKIPSPACE,
ST_WAITDIGITS, ST_WAITDIGITS,
ST_DIGITS, ST_DIGITS,
ST_EXTRASTUFF,
} state = ST_SKIPSPACE; } state = ST_SKIPSPACE;
/* /*
...@@ -373,18 +374,24 @@ INTEGER__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chun ...@@ -373,18 +374,24 @@ INTEGER__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chun
el->enum_name, el->nat_value); el->enum_name, el->nat_value);
state = ST_DIGITS; state = ST_DIGITS;
value = el->nat_value; value = el->nat_value;
break; lp = lstop - 1;
continue;
} }
ASN_DEBUG("Unknown identifier for INTEGER"); ASN_DEBUG("Unknown identifier for INTEGER");
} }
return XPBD_BROKEN_ENCODING; return XPBD_BROKEN_ENCODING;
} }
/* Found extra non-numeric stuff */
state = ST_EXTRASTUFF;
break; break;
} }
if(state != ST_DIGITS) { if(state != ST_DIGITS) {
if(xer_is_whitespace(chunk_buf, chunk_size)) { if(xer_is_whitespace(lp, lstop - lp)) {
if(state != ST_EXTRASTUFF)
return XPBD_NOT_BODY_IGNORE; return XPBD_NOT_BODY_IGNORE;
/* Fall through */
} else { } else {
ASN_DEBUG("No useful digits in output"); ASN_DEBUG("No useful digits in output");
return XPBD_BROKEN_ENCODING; /* No digits */ return XPBD_BROKEN_ENCODING; /* No digits */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment