summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoão Valverde <joao.valverde@tecnico.ulisboa.pt>2015-11-28 22:53:51 +0000
committerAlexis La Goutte <alexis.lagoutte@gmail.com>2015-11-29 10:58:43 +0000
commit7adf696a0ea438993d34521bb6214ce2ee82bd7f (patch)
tree8df8f97f12d4173f28cf3956f17f5977ec6b753c
parent5d20997a35226fab09b87699fa7e6a30bf26ffd1 (diff)
downloadwireshark-7adf696a0ea438993d34521bb6214ce2ee82bd7f.tar.gz
IPv6: Fix RPL routing header computed address count if ip6r_len == 0
Bug: 11803 Change-Id: I6de6a240dee1cfb310c41976853c0c3683b0b80a Reviewed-on: https://code.wireshark.org/review/12277 Reviewed-by: Michael Mann <mmann78@netscape.net> Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
-rw-r--r--epan/dissectors/packet-ipv6.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/epan/dissectors/packet-ipv6.c b/epan/dissectors/packet-ipv6.c
index 7106ffed72..a9aee10fc0 100644
--- a/epan/dissectors/packet-ipv6.c
+++ b/epan/dissectors/packet-ipv6.c
@@ -787,7 +787,10 @@ dissect_routing6(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data
/* from RFC6554:
n = (((Hdr Ext Len * 8) - Pad - (16 - CmprE)) / (16 - CmprI)) + 1 */
- segments = (((rt.ip6r_len * 8) - pad - (16 - cmprE)) / (16 - cmprI)) + 1;
+ segments = 0;
+ if (rt.ip6r_len > 0) {
+ segments = (((rt.ip6r_len * 8) - pad - (16 - cmprE)) / (16 - cmprI)) + 1;
+ }
ti = proto_tree_add_int(rthdr_tree, hf_ipv6_routing_hdr_rpl_segments, tvb, offset, 2, segments);
PROTO_ITEM_SET_GENERATED(ti);