From 4cbec00089f8dfa5ebfe0133e74b06d1ae755b3d Mon Sep 17 00:00:00 2001 From: Joakim Andersson Date: Fri, 25 Jun 2021 11:40:28 +0200 Subject: [PATCH] Bluetooth: Fix parsing of empty extendend advertising header Fix parsing of extended advertising when the extended advertising header is empty. The flag field is excluded when none of the fields are present and the extended header length field is 0. Signed-off-by: Joakim Andersson --- epan/dissectors/packet-btle.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/epan/dissectors/packet-btle.c b/epan/dissectors/packet-btle.c index 9aec96b4cb..eb8bb69f6a 100644 --- a/epan/dissectors/packet-btle.c +++ b/epan/dissectors/packet-btle.c @@ -1119,14 +1119,18 @@ dissect_btle(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data) proto_tree_add_item(ext_header_tree, hf_extended_advertising_mode, tvb, offset, 1, ENC_LITTLE_ENDIAN); offset += 1; - ext_flags_item = proto_tree_add_item(ext_header_tree, hf_extended_advertising_flags, tvb, offset, 1, ENC_NA); - ext_flags_tree = proto_item_add_subtree(ext_flags_item, ett_extended_advertising_flags); + if (ext_header_len > 0) { + ext_flags_item = proto_tree_add_item(ext_header_tree, hf_extended_advertising_flags, tvb, offset, 1, ENC_NA); + ext_flags_tree = proto_item_add_subtree(ext_flags_item, ett_extended_advertising_flags); - proto_tree_add_bitmask_list(ext_flags_tree, tvb, offset, 1, hfx_extended_advertising_flags, ENC_NA); - flags = tvb_get_guint8(tvb, offset); - offset += 1; + proto_tree_add_bitmask_list(ext_flags_tree, tvb, offset, 1, hfx_extended_advertising_flags, ENC_NA); + flags = tvb_get_guint8(tvb, offset); + offset += 1; - acad_len -= 1; + acad_len -= 1; + } else { + flags = 0; + } if (flags & 0x01) { /* Advertiser Address */