aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoakim Andersson <joakim.andersson@nordicsemi.no>2021-06-25 11:40:28 +0200
committerStig Bjørlykke <stig@bjorlykke.org>2021-07-08 07:23:07 +0000
commit4cbec00089f8dfa5ebfe0133e74b06d1ae755b3d (patch)
tree60ef4f72eb59c5be8d469ba09994ac3efbd6f6df
parentde9d5f76ff117c0cdf6e2f39caad8b052cf40170 (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.c16
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 */