From 3e5ef80b29eb8f7938e8583500671d1ea7397bdd Mon Sep 17 00:00:00 2001 From: Pascal Quantin Date: Thu, 28 Aug 2014 20:08:39 +0200 Subject: tvbparse: do not increment the token length when the new sub token length is 0 It fixes the unwanted addition of ignore characters when using tvbparse_some as seen with the capture from bug 10417 Change-Id: If68b587e1821fb34aa1fb56666986e1fa6385c33 Reviewed-on: https://code.wireshark.org/review/3905 Reviewed-by: Pascal Quantin --- epan/tvbparse.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'epan/tvbparse.c') diff --git a/epan/tvbparse.c b/epan/tvbparse.c index 97514d9b1c..4a7cba0897 100644 --- a/epan/tvbparse.c +++ b/epan/tvbparse.c @@ -583,7 +583,8 @@ static int cond_seq(tvbparse_t* tt, int offset, const tvbparse_wanted_t * wanted if (len >= 0) { if (ret_tok) { - ret_tok->len = (new_elem->offset - ret_tok->offset) + new_elem->len; + if (new_elem->len) + ret_tok->len = (new_elem->offset - ret_tok->offset) + new_elem->len; ret_tok->sub->last->next = new_elem; ret_tok->sub->last = new_elem; } else { @@ -661,7 +662,8 @@ static int cond_some(tvbparse_t* tt, int offset, const tvbparse_wanted_t * wante if(consumed >= 0) { if (ret_tok) { - ret_tok->len = (new_elem->offset - ret_tok->offset) + new_elem->len; + if (new_elem->len) + ret_tok->len = (new_elem->offset - ret_tok->offset) + new_elem->len; if (ret_tok->sub) { ret_tok->sub->last->next = new_elem; -- cgit v1.2.3