aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-rpl.c
diff options
context:
space:
mode:
authorStig Bjørlykke <stig@bjorlykke.org>2007-11-30 15:55:28 +0000
committerStig Bjørlykke <stig@bjorlykke.org>2007-11-30 15:55:28 +0000
commit8286c9a645a3937f3bfb5a735d447e498362596c (patch)
treefae56888a5417689302bcd112ece7c0ba94ec82f /epan/dissectors/packet-rpl.c
parent44145c21ed0988462a8ff2264eb6d2a79fb73d8e (diff)
From Florent DROUIN:
There is a new check for the length, and the reported_length is added to the offset, instead of the "theorical" length of the element. This fixes bug 2052. svn path=/trunk/; revision=23687
Diffstat (limited to 'epan/dissectors/packet-rpl.c')
-rw-r--r--epan/dissectors/packet-rpl.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/epan/dissectors/packet-rpl.c b/epan/dissectors/packet-rpl.c
index 59d84ed822..60d0de16e3 100644
--- a/epan/dissectors/packet-rpl.c
+++ b/epan/dissectors/packet-rpl.c
@@ -148,11 +148,16 @@ dissect_rpl_container(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
reported_length = tvb_reported_length_remaining(tvb, offset);
if (reported_length > sublen)
reported_length = sublen;
- dissect_rpl_container(tvb_new_subset(tvb,
+ if ( length > 0) {
+ dissect_rpl_container(tvb_new_subset(tvb,
offset, length, reported_length),
pinfo, rpl_container_tree);
-
- offset += sublen;
+ offset += reported_length;
+ } else {
+ /* no more data, exit the loop */
+ offset += reported_length;
+ break;
+ }
}
break;