diff options
author | Joakim Andersson <joakim.andersson@nordicsemi.no> | 2021-06-25 11:40:28 +0200 |
---|---|---|
committer | Stig Bjørlykke <stig@bjorlykke.org> | 2021-07-08 07:23:07 +0000 |
commit | 4cbec00089f8dfa5ebfe0133e74b06d1ae755b3d (patch) | |
tree | 60ef4f72eb59c5be8d469ba09994ac3efbd6f6df | |
parent | de9d5f76ff117c0cdf6e2f39caad8b052cf40170 (diff) |
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 <joakim.andersson@nordicsemi.no>
-rw-r--r-- | epan/dissectors/packet-btle.c | 16 |
1 files 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 */ |