From 806b0bb1a72d8ee7bba687df82d1931a3479e537 Mon Sep 17 00:00:00 2001 From: Lev Walkin <vlm@lionet.info> Date: Wed, 9 Mar 2005 22:31:22 +0000 Subject: [PATCH] prohibit extra data after recognized body --- skeletons/INTEGER.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/skeletons/INTEGER.c b/skeletons/INTEGER.c index a20bee11..164bf3f6 100644 --- a/skeletons/INTEGER.c +++ b/skeletons/INTEGER.c @@ -311,6 +311,7 @@ INTEGER__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chun ST_SKIPSPACE, ST_WAITDIGITS, ST_DIGITS, + ST_EXTRASTUFF, } state = ST_SKIPSPACE; /* @@ -373,18 +374,24 @@ INTEGER__xer_body_decode(asn_TYPE_descriptor_t *td, void *sptr, const void *chun el->enum_name, el->nat_value); state = ST_DIGITS; value = el->nat_value; - break; + lp = lstop - 1; + continue; } ASN_DEBUG("Unknown identifier for INTEGER"); } return XPBD_BROKEN_ENCODING; } + + /* Found extra non-numeric stuff */ + state = ST_EXTRASTUFF; break; } if(state != ST_DIGITS) { - if(xer_is_whitespace(chunk_buf, chunk_size)) { - return XPBD_NOT_BODY_IGNORE; + if(xer_is_whitespace(lp, lstop - lp)) { + if(state != ST_EXTRASTUFF) + return XPBD_NOT_BODY_IGNORE; + /* Fall through */ } else { ASN_DEBUG("No useful digits in output"); return XPBD_BROKEN_ENCODING; /* No digits */ -- GitLab