From 96e31cb1163172b61841070e7b67f44dce9b4153 Mon Sep 17 00:00:00 2001 From: Teyut Date: Thu, 3 Dec 2020 23:22:02 +0100 Subject: [PATCH] RadioTap: skip present bits for vendor NS. An error messages was shown when more than 1 present bits was set for a vendor NS because these bits were not skipped properly. Closes https://gitlab.com/wireshark/wireshark/-/issues/17047 --- epan/dissectors/packet-ieee80211-radiotap-iter.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/epan/dissectors/packet-ieee80211-radiotap-iter.c b/epan/dissectors/packet-ieee80211-radiotap-iter.c index 202577873d..ef3c5b1c78 100644 --- a/epan/dissectors/packet-ieee80211-radiotap-iter.c +++ b/epan/dissectors/packet-ieee80211-radiotap-iter.c @@ -346,6 +346,7 @@ return_tlv: } if (!align) { /* skip all subsequent data */ + int skip_size = IEEE80211_RADIOTAP_RADIOTAP_NAMESPACE - (iterator->_arg_index % 32); /* XXX - we should report an expert info here */ if (!iterator->_next_ns_data) return -EINVAL; @@ -353,6 +354,9 @@ return_tlv: /* give up on this namespace */ iterator->current_namespace = NULL; iterator->_next_ns_data = NULL; + // Remove 1 because jump to next_entry will also shift bitmap by 1 + iterator->_bitmap_shifter >>= skip_size - 1; + iterator->_arg_index += skip_size - 1; /* XXX - we should report an expert info here */ if (!ITERATOR_VALID(iterator, 0)) return -EINVAL;