aboutsummaryrefslogtreecommitdiffstats
path: root/asn1c/unber.c
diff options
context:
space:
mode:
authorLev Walkin <vlm@lionet.info>2005-11-28 19:12:38 +0000
committerLev Walkin <vlm@lionet.info>2005-11-28 19:12:38 +0000
commitff4cf9d2bbc80746033ac810c80110a883da9897 (patch)
treed7a03e3baedb817d91770f8eda8e405a3f3e7895 /asn1c/unber.c
parent6036488576624c21d7e7035dd488cb36502b6986 (diff)
proper reacting on nested indefinite length containers
Diffstat (limited to 'asn1c/unber.c')
-rw-r--r--asn1c/unber.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/asn1c/unber.c b/asn1c/unber.c
index c573cfdb..21761312 100644
--- a/asn1c/unber.c
+++ b/asn1c/unber.c
@@ -322,9 +322,10 @@ process_deeper(const char *fname, FILE *fp, asn1c_integer_t *offset, int level,
effective_size += t_len + l_len;
local_esize += t_len + l_len;
- if(expect_eoc && tagbuf[0] == '\0' && tagbuf[1] == '\0') {
+ if(expect_eoc && !tagbuf[0] && !tagbuf[1]) {
/* End of content octets */
- print_TL(1, *offset - 2, level - 1, 1, 2, 0, -1, effective_size);
+ print_TL(1, *offset - 2, level - 1, 1, 2, 0, -1,
+ effective_size);
return PD_FINISHED;
}
@@ -350,7 +351,8 @@ process_deeper(const char *fname, FILE *fp, asn1c_integer_t *offset, int level,
local_esize += dec;
if(tlv_len == -1) {
tblen = 0;
- if(pdc == PD_FINISHED && limit < 0)
+ if(pdc == PD_FINISHED
+ && limit < 0 && !expect_eoc)
return pdc;
continue;
}