diff options
author | Lev Walkin <vlm@lionet.info> | 2006-10-03 06:39:36 +0000 |
---|---|---|
committer | Lev Walkin <vlm@lionet.info> | 2006-10-03 06:39:36 +0000 |
commit | 7cbbc906470b7a53d8ae226d81275cb3d2b24045 (patch) | |
tree | 0774b007536ae7c427b72da067a9ade1afded274 | |
parent | 61c391bd831d52562581b24b267cdb1a13844a34 (diff) |
MAP test revealed extensions handling problem
-rw-r--r-- | skeletons/constr_SEQUENCE.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/skeletons/constr_SEQUENCE.c b/skeletons/constr_SEQUENCE.c index b7694343..043daccb 100644 --- a/skeletons/constr_SEQUENCE.c +++ b/skeletons/constr_SEQUENCE.c @@ -346,7 +346,8 @@ SEQUENCE_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, * or an extension (...), * or an end of the indefinite-length structure. */ - if(!IN_EXTENSION_GROUP(specs, edx)) { + if(!IN_EXTENSION_GROUP(specs, + edx + elements[edx].optional)) { ASN_DEBUG("Unexpected tag %s (at %d)", ber_tlv_tag_string(tlv_tag), edx); ASN_DEBUG("Expected tag %s (%s)%s", @@ -358,7 +359,10 @@ SEQUENCE_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td, } else { /* Skip this tag */ ssize_t skip; + edx += elements[edx].optional; + ASN_DEBUG("Skipping unexpected %s (at %d)", + ber_tlv_tag_string(tlv_tag), edx); skip = ber_skip_length(opt_codec_ctx, BER_TLV_CONSTRUCTED(ptr), (const char *)ptr + tag_len, |