diff options
author | Stig Bjørlykke <stig@bjorlykke.org> | 2007-11-30 15:55:28 +0000 |
---|---|---|
committer | Stig Bjørlykke <stig@bjorlykke.org> | 2007-11-30 15:55:28 +0000 |
commit | 8286c9a645a3937f3bfb5a735d447e498362596c (patch) | |
tree | fae56888a5417689302bcd112ece7c0ba94ec82f /epan/dissectors/packet-rpl.c | |
parent | 44145c21ed0988462a8ff2264eb6d2a79fb73d8e (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.c | 11 |
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; |