summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoão Valverde <joao.valverde@tecnico.ulisboa.pt>2017-06-14 21:01:11 +0100
committerMichael Mann <mmann78@netscape.net>2017-06-15 01:40:54 +0000
commit588c1f5f9a86c4087273365251f40278c082c1e6 (patch)
treeca3703766e5b5a35ea2823df0199ebbb800ec160
parentd7f1dc8b692530ed2fd5be38a0fdb18d9630bd60 (diff)
downloadwireshark-588c1f5f9a86c4087273365251f40278c082c1e6.tar.gz
RADIUS: Fix dissection for non-default VSA lengths
Ping-Bug: 13745 Change-Id: I1c9f69d0015ba9bea16d8300fbfd85abe110f829 Reviewed-on: https://code.wireshark.org/review/22136 Reviewed-by: João Valverde <j@v6e.pt> (cherry picked from commit 9ed4046e0f3e8872c3adec3f11376ee392834525) Reviewed-on: https://code.wireshark.org/review/22139 Petri-Dish: João Valverde <j@v6e.pt> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
-rw-r--r--epan/dissectors/packet-radius.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/epan/dissectors/packet-radius.c b/epan/dissectors/packet-radius.c
index ffeb80b810..3c279b9baf 100644
--- a/epan/dissectors/packet-radius.c
+++ b/epan/dissectors/packet-radius.c
@@ -1536,7 +1536,9 @@ dissect_attribute_value_pairs(proto_tree *tree, packet_info *pinfo, tvbuff_t *tv
offset += 4;
break;
default:
- avp_vsa_type = tvb_get_guint8(tvb, offset++);
+ /* vendor->type_octets = 1; */
+ DISSECTOR_ASSERT_NOT_REACHED();
+ break;
}
if (!avp_is_extended) {
@@ -1552,7 +1554,9 @@ dissect_attribute_value_pairs(proto_tree *tree, packet_info *pinfo, tvbuff_t *tv
offset += 2;
break;
default:
- avp_vsa_len = tvb_get_guint8(tvb, offset++);
+ /* vendor->length_octets = 1; */
+ DISSECTOR_ASSERT_NOT_REACHED();
+ break;
}
avp_vsa_header_len = vendor->type_octets + vendor->length_octets + (vendor->has_flags ? 1 : 0);
} else {
@@ -1592,11 +1596,11 @@ dissect_attribute_value_pairs(proto_tree *tree, packet_info *pinfo, tvbuff_t *tv
avp_vsa_len+avp_vsa_header_len, dictionary_entry->name, avp_vsa_type);
}
- proto_tree_add_item(avp_tree, hf_radius_avp_vendor_type, tvb, vendor_offset, 1, ENC_BIG_ENDIAN);
- vendor_offset += 1;
- if (!avp_is_extended) {
- proto_tree_add_item(avp_tree, hf_radius_avp_vendor_len, tvb, vendor_offset, 1, ENC_BIG_ENDIAN);
- /* vendor_offset += 1; */
+ proto_tree_add_item(avp_tree, hf_radius_avp_vendor_type, tvb, vendor_offset, vendor->type_octets, ENC_BIG_ENDIAN);
+ vendor_offset += vendor->type_octets;
+ if (!avp_is_extended && vendor->length_octets) {
+ proto_tree_add_item(avp_tree, hf_radius_avp_vendor_len, tvb, vendor_offset, vendor->length_octets, ENC_BIG_ENDIAN);
+ /* vendor_offset += vendor->length_octets; */
}
if (show_length) {