nl80211: Register for only for specific Action frames in AP mode [DO NOT MERGE] am: d6cd7d7f4d am: 2679ecf37a -s ours am: da3c68294d -s ours
am: b3a5229ec2
Change-Id: Ic176967be85d00ba9e8805598030de610643038d
diff --git a/src/drivers/driver_nl80211_capa.c b/src/drivers/driver_nl80211_capa.c
index fc0f95a..8f07bcb 100644
--- a/src/drivers/driver_nl80211_capa.c
+++ b/src/drivers/driver_nl80211_capa.c
@@ -827,8 +827,12 @@
attr = tb_vendor[QCA_WLAN_VENDOR_ATTR_FEATURE_FLAGS];
if (attr) {
- info->flags = nla_data(attr);
- info->flags_len = nla_len(attr);
+ int len = nla_len(attr);
+ info->flags = os_malloc(len);
+ if (info->flags != NULL) {
+ os_memcpy(info->flags, nla_data(attr), len);
+ info->flags_len = len;
+ }
}
attr = tb_vendor[QCA_WLAN_VENDOR_ATTR_CONCURRENCY_CAPA];
if (attr)
@@ -891,6 +895,7 @@
if (check_feature(QCA_WLAN_VENDOR_FEATURE_OFFCHANNEL_SIMULTANEOUS,
&info))
drv->capa.flags |= WPA_DRIVER_FLAGS_OFFCHANNEL_SIMULTANEOUS;
+ os_free(info.flags);
}
#endif /* CONFIG_DRIVER_NL80211_QCA */
diff --git a/wpa_supplicant/scan.c b/wpa_supplicant/scan.c
index 330679c..c2a5cfd 100644
--- a/wpa_supplicant/scan.c
+++ b/wpa_supplicant/scan.c
@@ -582,6 +582,11 @@
{
unsigned int i;
struct wpa_ssid *ssid;
+ /*
+ * For devices with |max_ssids| greater than 1, leave the last slot empty
+ * for adding the wildcard scan entry.
+ */
+ max_ssids = (max_ssids == 1) ? max_ssids : max_ssids - 1;
for (i = 0; i < wpa_s->scan_id_count; i++) {
unsigned int j;