diff options
author | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2016-02-05 13:53:39 +0100 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2016-02-05 23:30:07 +0000 |
commit | bd6531b91b23bec6e4327cd2c3a47621fdf0c14a (patch) | |
tree | ea39b6808369a7d429112c6b39350180f4fb76b2 /epan/dissectors/packet-capwap.c | |
parent | 154e710857599fb91351d955360f1f1dd8eddd22 (diff) |
CAPWAP: fix cannot optimize loop, the loop counter may overflow [-Wunsafe-loop-optimizations]
Change-Id: I99c556950007957c09809dc477a94d410cca4cc8
Reviewed-on: https://code.wireshark.org/review/13728
Petri-Dish: João Valverde <j@v6e.pt>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: João Valverde <j@v6e.pt>
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors/packet-capwap.c')
-rw-r--r-- | epan/dissectors/packet-capwap.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/epan/dissectors/packet-capwap.c b/epan/dissectors/packet-capwap.c index fd1daa0036..a7923c323e 100644 --- a/epan/dissectors/packet-capwap.c +++ b/epan/dissectors/packet-capwap.c @@ -1547,7 +1547,7 @@ static const value_string fortinet_element_id_vals[] = { static int dissect_capwap_message_element_vendor_fortinet_type(tvbuff_t *tvb, proto_tree *sub_msg_element_type_tree, guint offset, packet_info *pinfo _U_, guint optlen, proto_item *msg_element_type_item) { - guint element_id; + guint element_id, i; proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_element_id, tvb, offset, 2, ENC_BIG_ENDIAN); element_id = tvb_get_ntohs(tvb, offset); @@ -1582,7 +1582,7 @@ dissect_capwap_message_element_vendor_fortinet_type(tvbuff_t *tvb, proto_tree *s offset += 1; break; case VSP_FORTINET_MAC:{ /* 33 */ - guint8 mac_length; + guint mac_length; proto_item *ti; proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mac_rid, tvb, offset, 1, ENC_BIG_ENDIAN); offset += 1; @@ -1596,7 +1596,7 @@ dissect_capwap_message_element_vendor_fortinet_type(tvbuff_t *tvb, proto_tree *s expert_add_info(pinfo, ti, &ei_capwap_fortinet_mac_len ); break; } - for(;mac_length > 0; mac_length -= 6){ + for(i = 0; i < mac_length/6; i++){ proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_mac, tvb, offset, 6, ENC_NA); offset += 6; } @@ -1609,7 +1609,7 @@ dissect_capwap_message_element_vendor_fortinet_type(tvbuff_t *tvb, proto_tree *s offset += 1; break; case VSP_FORTINET_WBH_STA:{ /* 36 */ - guint16 mac_length; + guint mac_length; proto_item *ti; proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_wbh_sta_rid, tvb, offset, 1, ENC_BIG_ENDIAN); @@ -1622,7 +1622,7 @@ dissect_capwap_message_element_vendor_fortinet_type(tvbuff_t *tvb, proto_tree *s expert_add_info(pinfo, ti, &ei_capwap_fortinet_mac_len ); break; } - for(;mac_length > 0; mac_length -= 6){ + for(i = 0; i < mac_length/6; i++){ proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_fortinet_wbh_sta_mac, tvb, offset, 6, ENC_NA); offset += 6; } @@ -2218,12 +2218,11 @@ hf_capwap_msg_element_type_ac_descriptor_dtls_policy, ett_capwap_ac_descriptor_d "AC IPv4 List length %u wrong, must be >= 4", optlen); break; } - offset_end = offset + 4 + optlen; offset += 4; if (optlen%4 == 0) { - while (offset_end-offset > 0) + for (i = 0; i < optlen/4; i++) { proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ac_ipv4_list, tvb, offset, 4, ENC_BIG_ENDIAN); offset += 4; @@ -2237,12 +2236,11 @@ hf_capwap_msg_element_type_ac_descriptor_dtls_policy, ett_capwap_ac_descriptor_d "AC IPv6 List length %u wrong, must be >= 4", optlen); break; } - offset_end = offset + 4 + optlen; offset += 4; if (optlen%16 == 0) { - while (offset_end-offset > 0) + for (i = 0; i < optlen/16; i++) { proto_tree_add_item(sub_msg_element_type_tree, hf_capwap_msg_element_type_ac_ipv6_list, tvb, offset, 16, ENC_NA); offset += 16; |