[PATCH] wpa_supplicant: Report country code failures from SET command
Bhatt, Kapil
kapil.bhatt at nordicsemi.no
Wed Oct 21 00:26:36 PDT 2026
The command "SET country XX" replied "OK" even when the driver
rejected the country code, because wpa_supplicant_update_config()
returned void. Make it return an error when wpa_drv_set_country()
fails and propagate it from wpa_supplicant_ctrl_iface_set(),
so the reply is "FAIL".
Signed-off-by: Kapil Bhatt <kapil.bhatt at nordicsemi.no>
---
wpa_supplicant/ctrl_iface.c | 2 +-
wpa_supplicant/wpa_supplicant.c | 7 ++++++-
wpa_supplicant/wpa_supplicant_i.h | 2 +-
3 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/wpa_supplicant/ctrl_iface.c b/wpa_supplicant/ctrl_iface.c
index 0d995bb60..952687d7d 100644
--- a/wpa_supplicant/ctrl_iface.c
+++ b/wpa_supplicant/ctrl_iface.c
@@ -1012,7 +1012,7 @@ static int wpa_supplicant_ctrl_iface_set(struct wpa_supplicant *wpa_s,
wpa_s->conf, cmd, -1,
wpa_s->global->params.show_details);
if (ret == 0)
- wpa_supplicant_update_config(wpa_s);
+ ret = wpa_supplicant_update_config(wpa_s);
else if (ret == 1)
ret = 0;
}
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index bf577e0d5..0524cc793 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -9887,8 +9887,10 @@ int wpa_supplicant_parse_config(const char *fname)
}
-void wpa_supplicant_update_config(struct wpa_supplicant *wpa_s)
+int wpa_supplicant_update_config(struct wpa_supplicant *wpa_s)
{
+ int ret = 0;
+
if ((wpa_s->conf->changed_parameters & CFG_CHANGED_COUNTRY) &&
wpa_s->conf->country[0] && wpa_s->conf->country[1]) {
char country[3];
@@ -9898,6 +9900,7 @@ void wpa_supplicant_update_config(struct wpa_supplicant *wpa_s)
if (wpa_drv_set_country(wpa_s, country) < 0) {
wpa_printf(MSG_ERROR, "Failed to set country code "
"'%s'", country);
+ ret = -1;
}
}
@@ -9946,6 +9949,8 @@ void wpa_supplicant_update_config(struct wpa_supplicant *wpa_s)
#endif /* CONFIG_WPS */
wpas_p2p_update_config(wpa_s);
wpa_s->conf->changed_parameters = 0;
+
+ return ret;
}
diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h
index 1ff84a472..890651a67 100644
--- a/wpa_supplicant/wpa_supplicant_i.h
+++ b/wpa_supplicant/wpa_supplicant_i.h
@@ -1944,7 +1944,7 @@ void wpa_supplicant_terminate_proc(struct wpa_global *global);
void wpa_supplicant_rx_eapol(void *ctx, const u8 *own_addr,
const u8 *buf, size_t len,
enum frame_encryption encrypted);
-void wpa_supplicant_update_config(struct wpa_supplicant *wpa_s);
+int wpa_supplicant_update_config(struct wpa_supplicant *wpa_s);
void wpa_supplicant_clear_status(struct wpa_supplicant *wpa_s);
void wpas_connection_failed(struct wpa_supplicant *wpa_s, const u8 *bssid,
const u8 **link_bssids);
--
2.53.0
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-wpa_supplicant-Report-country-code-failures-from-SET.patch
Type: application/octet-stream
Size: 2986 bytes
Desc: 0001-wpa_supplicant-Report-country-code-failures-from-SET.patch
URL: <http://lists.infradead.org/pipermail/hostap/attachments/20261021/0a7d1f1d/attachment.obj>
More information about the Hostap
mailing list