Supplicant changes for stadium wifi.
Bug: 62225787
Test: manual
Change-Id: I975e6044b80418713493a4c540df91907c639291
diff --git a/wpa_supplicant/hidl/1.0/sta_network.cpp b/wpa_supplicant/hidl/1.0/sta_network.cpp
index 72185b3..f471941 100644
--- a/wpa_supplicant/hidl/1.0/sta_network.cpp
+++ b/wpa_supplicant/hidl/1.0/sta_network.cpp
@@ -1519,7 +1519,8 @@
enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_SIM;
struct wpa_supplicant *wpa_s = retrieveIfacePtr();
if (wpa_supplicant_ctrl_rsp_handle(
- wpa_s, wpa_ssid, rtype, ctrl_rsp_param.c_str())) {
+ wpa_s, wpa_ssid, rtype, ctrl_rsp_param.data(),
+ ctrl_rsp_param.size())) {
return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
}
eapol_sm_notify_ctrl_response(wpa_s->eapol);
@@ -1535,7 +1536,8 @@
struct wpa_supplicant *wpa_s = retrieveIfacePtr();
enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_SIM;
if (wpa_supplicant_ctrl_rsp_handle(
- wpa_s, wpa_ssid, rtype, kNetworkEapSimGsmAuthFailure)) {
+ wpa_s, wpa_ssid, rtype, kNetworkEapSimGsmAuthFailure,
+ strlen(kNetworkEapSimGsmAuthFailure))) {
return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
}
eapol_sm_notify_ctrl_response(wpa_s->eapol);
@@ -1568,7 +1570,8 @@
enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_SIM;
struct wpa_supplicant *wpa_s = retrieveIfacePtr();
if (wpa_supplicant_ctrl_rsp_handle(
- wpa_s, wpa_ssid, rtype, ctrl_rsp_param.c_str())) {
+ wpa_s, wpa_ssid, rtype, ctrl_rsp_param.data(),
+ ctrl_rsp_param.size())) {
return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
}
eapol_sm_notify_ctrl_response(wpa_s->eapol);
@@ -1592,7 +1595,8 @@
enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_SIM;
struct wpa_supplicant *wpa_s = retrieveIfacePtr();
if (wpa_supplicant_ctrl_rsp_handle(
- wpa_s, wpa_ssid, rtype, ctrl_rsp_param.c_str())) {
+ wpa_s, wpa_ssid, rtype, ctrl_rsp_param.data(),
+ ctrl_rsp_param.size())) {
return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
}
eapol_sm_notify_ctrl_response(wpa_s->eapol);
@@ -1608,7 +1612,8 @@
struct wpa_supplicant *wpa_s = retrieveIfacePtr();
enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_SIM;
if (wpa_supplicant_ctrl_rsp_handle(
- wpa_s, wpa_ssid, rtype, kNetworkEapSimUmtsAuthFailure)) {
+ wpa_s, wpa_ssid, rtype, kNetworkEapSimUmtsAuthFailure,
+ strlen(kNetworkEapSimUmtsAuthFailure))) {
return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
}
eapol_sm_notify_ctrl_response(wpa_s->eapol);
@@ -1623,7 +1628,8 @@
enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_EAP_IDENTITY;
struct wpa_supplicant *wpa_s = retrieveIfacePtr();
if (wpa_supplicant_ctrl_rsp_handle(
- wpa_s, wpa_ssid, rtype, ctrl_rsp_param.c_str())) {
+ wpa_s, wpa_ssid, rtype, ctrl_rsp_param.data(),
+ ctrl_rsp_param.size())) {
return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
}
eapol_sm_notify_ctrl_response(wpa_s->eapol);
diff --git a/wpa_supplicant/hidl/1.1/sta_network.cpp b/wpa_supplicant/hidl/1.1/sta_network.cpp
index bfa9267..7af8f08 100644
--- a/wpa_supplicant/hidl/1.1/sta_network.cpp
+++ b/wpa_supplicant/hidl/1.1/sta_network.cpp
@@ -1519,7 +1519,8 @@
enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_SIM;
struct wpa_supplicant *wpa_s = retrieveIfacePtr();
if (wpa_supplicant_ctrl_rsp_handle(
- wpa_s, wpa_ssid, rtype, ctrl_rsp_param.c_str())) {
+ wpa_s, wpa_ssid, rtype, ctrl_rsp_param.c_str(),
+ ctrl_rsp_param.size())) {
return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
}
eapol_sm_notify_ctrl_response(wpa_s->eapol);
@@ -1535,7 +1536,8 @@
struct wpa_supplicant *wpa_s = retrieveIfacePtr();
enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_SIM;
if (wpa_supplicant_ctrl_rsp_handle(
- wpa_s, wpa_ssid, rtype, kNetworkEapSimGsmAuthFailure)) {
+ wpa_s, wpa_ssid, rtype, kNetworkEapSimGsmAuthFailure,
+ strlen(kNetworkEapSimGsmAuthFailure))) {
return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
}
eapol_sm_notify_ctrl_response(wpa_s->eapol);
@@ -1568,7 +1570,8 @@
enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_SIM;
struct wpa_supplicant *wpa_s = retrieveIfacePtr();
if (wpa_supplicant_ctrl_rsp_handle(
- wpa_s, wpa_ssid, rtype, ctrl_rsp_param.c_str())) {
+ wpa_s, wpa_ssid, rtype, ctrl_rsp_param.c_str(),
+ ctrl_rsp_param.size())) {
return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
}
eapol_sm_notify_ctrl_response(wpa_s->eapol);
@@ -1592,7 +1595,8 @@
enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_SIM;
struct wpa_supplicant *wpa_s = retrieveIfacePtr();
if (wpa_supplicant_ctrl_rsp_handle(
- wpa_s, wpa_ssid, rtype, ctrl_rsp_param.c_str())) {
+ wpa_s, wpa_ssid, rtype, ctrl_rsp_param.c_str(),
+ ctrl_rsp_param.size())) {
return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
}
eapol_sm_notify_ctrl_response(wpa_s->eapol);
@@ -1608,7 +1612,8 @@
struct wpa_supplicant *wpa_s = retrieveIfacePtr();
enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_SIM;
if (wpa_supplicant_ctrl_rsp_handle(
- wpa_s, wpa_ssid, rtype, kNetworkEapSimUmtsAuthFailure)) {
+ wpa_s, wpa_ssid, rtype, kNetworkEapSimUmtsAuthFailure,
+ strlen(kNetworkEapSimUmtsAuthFailure))) {
return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
}
eapol_sm_notify_ctrl_response(wpa_s->eapol);
@@ -1623,7 +1628,8 @@
enum wpa_ctrl_req_type rtype = WPA_CTRL_REQ_EAP_IDENTITY;
struct wpa_supplicant *wpa_s = retrieveIfacePtr();
if (wpa_supplicant_ctrl_rsp_handle(
- wpa_s, wpa_ssid, rtype, ctrl_rsp_param.c_str())) {
+ wpa_s, wpa_ssid, rtype, ctrl_rsp_param.c_str(),
+ ctrl_rsp_param.size())) {
return {SupplicantStatusCode::FAILURE_UNKNOWN, ""};
}
eapol_sm_notify_ctrl_response(wpa_s->eapol);
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index f8e5bf7..498967b 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -6353,7 +6353,7 @@
(const u8 *) value, os_strlen(value));
rtype = wpa_supplicant_ctrl_req_from_string(field);
- return wpa_supplicant_ctrl_rsp_handle(wpa_s, ssid, rtype, value);
+ return wpa_supplicant_ctrl_rsp_handle(wpa_s, ssid, rtype, value, strlen(value));
#else /* IEEE8021X_EAPOL */
wpa_printf(MSG_DEBUG, "CTRL_IFACE: IEEE 802.1X not included");
return -1;
@@ -6363,7 +6363,7 @@
int wpa_supplicant_ctrl_rsp_handle(struct wpa_supplicant *wpa_s,
struct wpa_ssid *ssid,
enum wpa_ctrl_req_type rtype,
- const char *value)
+ const char *value, int value_len)
{
#ifdef IEEE8021X_EAPOL
struct eap_peer_config *eap = &ssid->eap;
@@ -6371,8 +6371,8 @@
switch (rtype) {
case WPA_CTRL_REQ_EAP_IDENTITY:
os_free(eap->identity);
- eap->identity = (u8 *) os_strdup(value);
- eap->identity_len = os_strlen(value);
+ eap->identity = (u8 *) dup_binstr(value, value_len);
+ eap->identity_len = value_len;
eap->pending_req_identity = 0;
if (ssid == wpa_s->current_ssid)
wpa_s->reassociate = 1;
@@ -6380,7 +6380,7 @@
case WPA_CTRL_REQ_EAP_PASSWORD:
bin_clear_free(eap->password, eap->password_len);
eap->password = (u8 *) os_strdup(value);
- eap->password_len = os_strlen(value);
+ eap->password_len = value_len;
eap->pending_req_password = 0;
if (ssid == wpa_s->current_ssid)
wpa_s->reassociate = 1;
@@ -6388,7 +6388,7 @@
case WPA_CTRL_REQ_EAP_NEW_PASSWORD:
bin_clear_free(eap->new_password, eap->new_password_len);
eap->new_password = (u8 *) os_strdup(value);
- eap->new_password_len = os_strlen(value);
+ eap->new_password_len = value_len;
eap->pending_req_new_password = 0;
if (ssid == wpa_s->current_ssid)
wpa_s->reassociate = 1;
@@ -6403,7 +6403,7 @@
case WPA_CTRL_REQ_EAP_OTP:
bin_clear_free(eap->otp, eap->otp_len);
eap->otp = (u8 *) os_strdup(value);
- eap->otp_len = os_strlen(value);
+ eap->otp_len = value_len;
os_free(eap->pending_req_otp);
eap->pending_req_otp = NULL;
eap->pending_req_otp_len = 0;
diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h
index d0172fa..acde7c5 100644
--- a/wpa_supplicant/wpa_supplicant_i.h
+++ b/wpa_supplicant/wpa_supplicant_i.h
@@ -1389,7 +1389,7 @@
int wpa_supplicant_ctrl_rsp_handle(struct wpa_supplicant *wpa_s,
struct wpa_ssid *ssid,
enum wpa_ctrl_req_type rtype,
- const char *value);
+ const char *value, int len);
void ibss_mesh_setup_freq(struct wpa_supplicant *wpa_s,
const struct wpa_ssid *ssid,