aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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 */