From 05a5ff7abec6fb4cd16273b9dc90776ad2385f38 Mon Sep 17 00:00:00 2001 From: David Bauer Date: Sun, 30 Jan 2022 13:44:16 +0100 Subject: [PATCH] nl80211: add extra-ies only if allowed by driver Signed-off-by: David Bauer --- src/drivers/driver.h | 3 +++ src/drivers/driver_nl80211_capa.c | 4 ++++ src/drivers/driver_nl80211_scan.c | 2 +- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/drivers/driver.h b/src/drivers/driver.h index d3312a34d..b5b626451 100644 --- a/src/drivers/driver.h +++ b/src/drivers/driver.h @@ -2052,6 +2052,9 @@ struct wpa_driver_capa { /** Maximum number of iterations in a single scan plan */ u32 max_sched_scan_plan_iterations; + /** Maximum number of extra IE bytes for scans */ + u16 max_scan_ie_len; + /** Whether sched_scan (offloaded scanning) is supported */ int sched_scan_supported; diff --git a/src/drivers/driver_nl80211_capa.c b/src/drivers/driver_nl80211_capa.c index 83868b78e..b33b6badb 100644 --- a/src/drivers/driver_nl80211_capa.c +++ b/src/drivers/driver_nl80211_capa.c @@ -885,6 +885,10 @@ static int wiphy_info_handler(struct nl_msg *msg, void *arg) nla_get_u32(tb[NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS]); } + if (tb[NL80211_ATTR_MAX_SCAN_IE_LEN]) + capa->max_scan_ie_len = + nla_get_u16(tb[NL80211_ATTR_MAX_SCAN_IE_LEN]); + if (tb[NL80211_ATTR_MAX_MATCH_SETS]) capa->max_match_sets = nla_get_u8(tb[NL80211_ATTR_MAX_MATCH_SETS]); diff --git a/src/drivers/driver_nl80211_scan.c b/src/drivers/driver_nl80211_scan.c index 131608480..62d63cd5b 100644 --- a/src/drivers/driver_nl80211_scan.c +++ b/src/drivers/driver_nl80211_scan.c @@ -207,7 +207,7 @@ nl80211_scan_common(struct i802_bss *bss, u8 cmd, wpa_printf(MSG_DEBUG, "nl80211: Passive scan requested"); } - if (params->extra_ies) { + if (params->extra_ies && drv->capa.max_scan_ie_len <= params->extra_ies_len) { wpa_hexdump(MSG_MSGDUMP, "nl80211: Scan extra IEs", params->extra_ies, params->extra_ies_len); if (nla_put(msg, NL80211_ATTR_IE, params->extra_ies_len, -- 2.35.0