aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-radiotap.c
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2010-10-14 18:09:57 +0000
committerGerald Combs <gerald@wireshark.org>2010-10-14 18:09:57 +0000
commitdc46e7db50f8ef61085efa8683a176dcf2be2cf2 (patch)
treeaaa15136896708c6161ba3d5efec467a0da9aa40 /epan/dissectors/packet-radiotap.c
parentea4ca0524b1a48393a74ea124455dc24d5726116 (diff)
Tighten up our data rate check. This should fix bug 5280 (mostly).
svn path=/trunk/; revision=34516
Diffstat (limited to 'epan/dissectors/packet-radiotap.c')
-rw-r--r--epan/dissectors/packet-radiotap.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/epan/dissectors/packet-radiotap.c b/epan/dissectors/packet-radiotap.c
index f9b7f40ad8..4a00786e5d 100644
--- a/epan/dissectors/packet-radiotap.c
+++ b/epan/dissectors/packet-radiotap.c
@@ -1126,7 +1126,13 @@ dissect_radiotap(tvbuff_t * tvb, packet_info * pinfo, proto_tree * tree)
case IEEE80211_RADIOTAP_RATE:
rate = tvb_get_guint8(tvb, offset);
- if (rate & 0x80) {
+ /*
+ * XXX On FreeBSD rate & 0x80 means we have an MCS. On
+ * Linux and AirPcap it does not. If the check below
+ * doesn't work we may have to add a rate interpretation
+ * preference.
+ */
+ if (rate >= 0x80 && rate <= 0x8f) {
/* XXX adjust by CW and short GI like other sniffers? */
rate = ieee80211_htrates[rate & 0xf];
}