aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-capwap.c
diff options
context:
space:
mode:
authorAlexis La Goutte <alexis.lagoutte@gmail.com>2016-02-05 13:53:39 +0100
committerMichael Mann <mmann78@netscape.net>2016-02-05 23:30:07 +0000
commitbd6531b91b23bec6e4327cd2c3a47621fdf0c14a (patch)
treeea39b6808369a7d429112c6b39350180f4fb76b2 /epan/dissectors/packet-capwap.c
parent154e710857599fb91351d955360f1f1dd8eddd22 (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.c16
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;