[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