diff options
author | Uli Heilmeier <uh@heilmeier.eu> | 2018-09-05 01:12:46 +0200 |
---|---|---|
committer | Alexis La Goutte <alexis.lagoutte@gmail.com> | 2018-09-05 08:41:17 +0000 |
commit | 6e36e3757a499c2347db4cb1633cc2824577bc87 (patch) | |
tree | 1bbb36c763b4f862cbcf885266cc6cccf5c4ce74 /epan/dissectors/packet-radius.c | |
parent | 3df8dc99d60e1362d370d40c2a1bde233ffb2ab1 (diff) |
Radius: Fix offset for multiple VSA in one AVP
When there are multiple VSAs in one AVP we should forward the vendor_offset.
The length field includes the type field therefore we have to subtract it.
Bug: 15073
Change-Id: If365ebca493208d67b3283fe876d2d1b0bda64af
Reviewed-on: https://code.wireshark.org/review/29421
Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com>
Tested-by: Petri Dish Buildbot
Reviewed-by: Alexis La Goutte <alexis.lagoutte@gmail.com>
Diffstat (limited to 'epan/dissectors/packet-radius.c')
-rw-r--r-- | epan/dissectors/packet-radius.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/epan/dissectors/packet-radius.c b/epan/dissectors/packet-radius.c index 1243b99e2c..5f11f14d31 100644 --- a/epan/dissectors/packet-radius.c +++ b/epan/dissectors/packet-radius.c @@ -1538,6 +1538,7 @@ dissect_attribute_value_pairs(proto_tree *tree, packet_info *pinfo, tvbuff_t *tv guint32 avp_vsa_len; guint8 avp_vsa_flags = 0; guint32 avp_vsa_header_len; + guint32 vendor_attribute_len; switch (vendor->type_octets) { case 1: @@ -1627,8 +1628,8 @@ dissect_attribute_value_pairs(proto_tree *tree, packet_info *pinfo, tvbuff_t *tv 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; */ + proto_tree_add_item_ret_uint(avp_tree, hf_radius_avp_vendor_len, tvb, vendor_offset, vendor->length_octets, ENC_BIG_ENDIAN, &vendor_attribute_len); + vendor_offset += (vendor_attribute_len - vendor->type_octets); } if (show_length) { |