]> git.ipfire.org Git - thirdparty/iw.git/commitdiff
scan: fix crash when driver doesn't report frame type
authorSergey Matyukevich <sergey.matyukevich.os@quantenna.com>
Sat, 4 Aug 2018 20:31:11 +0000 (23:31 +0300)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 14 Aug 2018 11:34:08 +0000 (13:34 +0200)
If driver does not know what kind of frame has been received from BSS,
then it is possible to specify CFG80211_BSS_FTYPE_UNKNOWN
in cfg80211_inform_bss[_width].

In this case neither NL80211_BSS_BEACON_IES nor NL80211_BSS_PRESP_DATA
will be reported to userspace.

Signed-off-by: Sergey Matyukevich <sergey.matyukevich.os@quantenna.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
scan.c

diff --git a/scan.c b/scan.c
index 09b04a5eb352162816032afed69f040f1a1b1a59..d9681f3ab203f91dda8468113cdef649664119ee 100644 (file)
--- a/scan.c
+++ b/scan.c
@@ -2188,8 +2188,8 @@ static int print_bss_handler(struct nl_msg *msg, void *arg)
                struct nlattr *bcnies = bss[NL80211_BSS_BEACON_IES];
 
                if (bss[NL80211_BSS_PRESP_DATA] ||
-                   nla_len(ies) != nla_len(bcnies) ||
-                   memcmp(nla_data(ies), nla_data(bcnies), nla_len(ies)))
+                   (bcnies && (nla_len(ies) != nla_len(bcnies) ||
+                   memcmp(nla_data(ies), nla_data(bcnies), nla_len(ies)))))
                        printf("\tInformation elements from Probe Response "
                               "frame:\n");
                print_ies(nla_data(ies), nla_len(ies),