diff options
author | Android Build Coastguard Worker <android-build-coastguard-worker@google.com> | 2023-07-20 23:08:58 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2023-07-20 23:08:58 +0000 |
commit | dc1136e6599e5b68bad39e3d15a83d55cf1e7acc (patch) | |
tree | 692974b04d20bcb3149bf076048e63dd9bd51121 | |
parent | 627c6a9cf25b04e73544a820e3f4fe04149c3f2c (diff) | |
parent | ee8653724e9c118e01eb19f42084f7b5a8a85eee (diff) | |
download | wpa_supplicant_8-dc1136e6599e5b68bad39e3d15a83d55cf1e7acc.tar.gz |
Merge "Snap for 10448490 from 2f934d209cfe529b6823d88353eadc5c6ea69367 to simpleperf-release" into simpleperf-release
-rw-r--r-- | wpa_supplicant/aidl/aidl.h | 31 | ||||
-rw-r--r-- | wpa_supplicant/aidl/p2p_iface.cpp | 18 | ||||
-rw-r--r-- | wpa_supplicant/aidl/sta_iface.cpp | 34 | ||||
-rw-r--r-- | wpa_supplicant/dpp_supplicant.c | 2 | ||||
-rw-r--r-- | wpa_supplicant/notify.c | 2 |
5 files changed, 71 insertions, 16 deletions
diff --git a/wpa_supplicant/aidl/aidl.h b/wpa_supplicant/aidl/aidl.h index 2f3c7a05..e8778c5a 100644 --- a/wpa_supplicant/aidl/aidl.h +++ b/wpa_supplicant/aidl/aidl.h @@ -185,7 +185,7 @@ static void wpas_aidl_notify_hs20_rx_subscription_remediation( static void wpas_aidl_notify_hs20_rx_deauth_imminent_notice( struct wpa_supplicant *wpa_s, u8 code, u16 reauth_delay, const char *url) {} -void wpas_aidl_notify_hs20_rx_terms_and_conditions_acceptance( +static void wpas_aidl_notify_hs20_rx_terms_and_conditions_acceptance( struct wpa_supplicant *wpa_s, const char *url) {} static void wpas_aidl_notify_disconnect_reason(struct wpa_supplicant *wpa_s) {} @@ -203,7 +203,8 @@ static void wpas_aidl_notify_wps_event_pbc_overlap(struct wpa_supplicant *wpa_s) static void wpas_aidl_notify_p2p_device_found( struct wpa_supplicant *wpa_s, const u8 *addr, const struct p2p_peer_info *info, const u8 *peer_wfd_device_info, - u8 peer_wfd_device_info_len) + u8 peer_wfd_device_info_len, const u8 *peer_wfd_r2_device_info, + u8 peer_wfd_r2_device_info_len) {} static void wpas_aidl_notify_p2p_device_lost( struct wpa_supplicant *wpa_s, const u8 *p2p_device_addr) @@ -272,20 +273,24 @@ static void wpas_aidl_notify_dpp_invalid_uri(struct wpa_supplicant *wpa_s) {} static void wpas_aidl_notify_dpp_timeout(struct wpa_supplicant *wpa_s) {} -static void wpas_aidl_notify_dpp_failure(struct wpa_supplicant *wpa_s) +static void wpas_aidl_notify_dpp_auth_failure(struct wpa_supplicant *wpa_s) {} -void wpas_aidl_notify_dpp_config_sent_wait_response(struct wpa_supplicant *wpa_s) +static void wpas_aidl_notify_dpp_fail(struct wpa_supplicant *wpa_s) {} -void wpas_aidl_notify_dpp_config_accepted(struct wpa_supplicant *wpa_s) +static void wpas_aidl_notify_dpp_config_sent_wait_response(struct wpa_supplicant *wpa_s) {} -void wpas_aidl_notify_dpp_config_applied(struct wpa_supplicant *wpa_s) +static void wpas_aidl_notify_dpp_config_accepted(struct wpa_supplicant *wpa_s) {} -void wpas_aidl_notify_dpp_config_rejected(struct wpa_supplicant *wpa_s) +static void wpas_aidl_notify_dpp_config_rejected(struct wpa_supplicant *wpa_s) +{} +static void wpas_aidl_notify_dpp_conn_status(struct wpa_supplicant *wpa_s, + enum dpp_status_error status, const char *ssid, + const char *channel_list, unsigned short band_list[], int size) {} static void wpas_aidl_notify_pmk_cache_added(struct wpa_supplicant *wpas, struct rsn_pmksa_cache_entry *pmksa_entry) {} -void wpas_aidl_notify_bss_tm_status(struct wpa_supplicant *wpa_s) +static void wpas_aidl_notify_bss_tm_status(struct wpa_supplicant *wpa_s) {} static void wpas_aidl_notify_transition_disable(struct wpa_supplicant *wpa_s, struct wpa_ssid *ssid, @@ -293,22 +298,22 @@ static void wpas_aidl_notify_transition_disable(struct wpa_supplicant *wpa_s, {} static void wpas_aidl_notify_network_not_found(struct wpa_supplicant *wpa_s) {} -void wpas_aidl_notify_frequency_changed(struct wpa_supplicant *wpa_s, int frequency) +static void wpas_aidl_notify_frequency_changed(struct wpa_supplicant *wpa_s, int frequency) {} -void wpas_aidl_notify_ceritification(struct wpa_supplicant *wpa_s, +static void wpas_aidl_notify_ceritification(struct wpa_supplicant *wpa_s, int depth, const char *subject, const char *altsubject[], int num_altsubject, const char *cert_hash, const struct wpabuf *cert) {} -void wpas_aidl_notify_eap_method_selected(struct wpa_supplicant *wpa_s, +static void wpas_aidl_notify_eap_method_selected(struct wpa_supplicant *wpa_s, const char *reason_string) {} -void wpas_aidl_notify_ssid_temp_disabled(struct wpa_supplicant *wpa_s, +static void wpas_aidl_notify_ssid_temp_disabled(struct wpa_supplicant *wpa_s, const char *reason_string) {} -void wpas_aidl_notify_open_ssl_failure(struct wpa_supplicant *wpa_s, +static void wpas_aidl_notify_open_ssl_failure(struct wpa_supplicant *wpa_s, const char *reason_string) {} static void wpas_aidl_notify_qos_policy_reset(struct wpa_supplicant *wpa_s) {} diff --git a/wpa_supplicant/aidl/p2p_iface.cpp b/wpa_supplicant/aidl/p2p_iface.cpp index e7e2bf5b..adfd0dd7 100644 --- a/wpa_supplicant/aidl/p2p_iface.cpp +++ b/wpa_supplicant/aidl/p2p_iface.cpp @@ -1347,6 +1347,9 @@ ndk::ScopedAStatus P2pIface::provisionDiscoveryInternal( struct wpa_supplicant* wpa_s = retrieveIfacePtr(); p2ps_provision* prov_param; const char* config_method_str = nullptr; + if (peer_address.size() != ETH_ALEN) { + return createStatus(SupplicantStatusCode::FAILURE_UNKNOWN); + } switch (provision_method) { case WpsProvisionMethod::PBC: config_method_str = kConfigMethodStrPbc; @@ -1402,7 +1405,7 @@ ndk::ScopedAStatus P2pIface::inviteInternal( const std::vector<uint8_t>& peer_address) { struct wpa_supplicant* wpa_s = retrieveIfacePtr(); - if (peer_address.size() != ETH_ALEN) { + if (go_device_address.size() != ETH_ALEN || peer_address.size() != ETH_ALEN) { return {createStatus(SupplicantStatusCode::FAILURE_UNKNOWN)}; } if (wpas_p2p_invite_group( @@ -1490,6 +1493,10 @@ std::pair<std::vector<uint8_t>, ndk::ScopedAStatus> P2pIface::getSsidInternal( const std::vector<uint8_t>& peer_address) { struct wpa_supplicant* wpa_s = retrieveIfacePtr(); + if (peer_address.size() != ETH_ALEN) { + return {std::vector<uint8_t>(), + createStatus(SupplicantStatusCode::FAILURE_UNKNOWN)}; + } const struct p2p_peer_info* info = p2p_get_peer_info(wpa_s->global->p2p, peer_address.data(), 0); if (!info) { @@ -1512,6 +1519,10 @@ std::pair<P2pGroupCapabilityMask, ndk::ScopedAStatus> P2pIface::getGroupCapabili const std::vector<uint8_t>& peer_address) { struct wpa_supplicant* wpa_s = retrieveIfacePtr(); + if (peer_address.size() != ETH_ALEN) { + return {static_cast<P2pGroupCapabilityMask>(0), + createStatus(SupplicantStatusCode::FAILURE_UNKNOWN)}; + } const struct p2p_peer_info* info = p2p_get_peer_info(wpa_s->global->p2p, peer_address.data(), 0); if (!info) { @@ -1948,6 +1959,11 @@ ndk::ScopedAStatus P2pIface::addGroupWithConfigInternal( wpa_printf(MSG_DEBUG, "P2P: Stop any on-going P2P FIND before group join."); wpas_p2p_stop_find(wpa_s); + if (peer_address.size() != ETH_ALEN) { + return createStatusWithMsg(SupplicantStatusCode::FAILURE_ARGS_INVALID, + "Peer address is invalid."); + } + if (pending_scan_res_join_callback != NULL) { wpa_printf(MSG_WARNING, "P2P: Renew scan result callback with new request."); } diff --git a/wpa_supplicant/aidl/sta_iface.cpp b/wpa_supplicant/aidl/sta_iface.cpp index 0c72abad..f3691422 100644 --- a/wpa_supplicant/aidl/sta_iface.cpp +++ b/wpa_supplicant/aidl/sta_iface.cpp @@ -986,6 +986,9 @@ ndk::ScopedAStatus StaIface::initiateTdlsDiscoverInternal( { struct wpa_supplicant *wpa_s = retrieveIfacePtr(); int ret; + if (mac_address.size() != ETH_ALEN) { + return createStatus(SupplicantStatusCode::FAILURE_UNKNOWN); + } const u8 *peer = mac_address.data(); if (wpa_tdls_is_external_setup(wpa_s->wpa)) { ret = wpa_tdls_send_discovery_request(wpa_s->wpa, peer); @@ -1003,6 +1006,9 @@ ndk::ScopedAStatus StaIface::initiateTdlsSetupInternal( { struct wpa_supplicant *wpa_s = retrieveIfacePtr(); int ret; + if (mac_address.size() != ETH_ALEN) { + return createStatus(SupplicantStatusCode::FAILURE_UNKNOWN); + } const u8 *peer = mac_address.data(); if (wpa_tdls_is_external_setup(wpa_s->wpa) && !(wpa_s->conf->tdls_external_control)) { @@ -1022,6 +1028,9 @@ ndk::ScopedAStatus StaIface::initiateTdlsTeardownInternal( { struct wpa_supplicant *wpa_s = retrieveIfacePtr(); int ret; + if (mac_address.size() != ETH_ALEN) { + return createStatus(SupplicantStatusCode::FAILURE_UNKNOWN); + } const u8 *peer = mac_address.data(); if (wpa_tdls_is_external_setup(wpa_s->wpa) && !(wpa_s->conf->tdls_external_control)) { @@ -1059,6 +1068,9 @@ ndk::ScopedAStatus StaIface::initiateAnqpQueryInternal( static_cast<std::underlying_type< Hs20AnqpSubtypes>::type>(type)); } + if (mac_address.size() != ETH_ALEN) { + return createStatus(SupplicantStatusCode::FAILURE_UNKNOWN); + } if (anqp_send_req( wpa_s, mac_address.data(), 0, info_elems_buf, num_info_elems, @@ -1077,6 +1089,9 @@ ndk::ScopedAStatus StaIface::initiateVenueUrlAnqpQueryInternal( #ifdef CONFIG_INTERWORKING struct wpa_supplicant *wpa_s = retrieveIfacePtr(); uint16_t info_elems_buf[1] = {ANQP_VENUE_URL}; + if (mac_address.size() != ETH_ALEN) { + return createStatus(SupplicantStatusCode::FAILURE_UNKNOWN); + } if (anqp_send_req( wpa_s, mac_address.data(), 0, info_elems_buf, 1, 0, 0)) { @@ -1093,6 +1108,9 @@ ndk::ScopedAStatus StaIface::initiateHs20IconQueryInternal( { #ifdef CONFIG_HS20 struct wpa_supplicant *wpa_s = retrieveIfacePtr(); + if (mac_address.size() != ETH_ALEN) { + return createStatus(SupplicantStatusCode::FAILURE_UNKNOWN); + } wpa_s->fetch_osu_icon_in_progress = 0; if (hs20_anqp_send_req( wpa_s, mac_address.data(), BIT(HS20_STYPE_ICON_REQUEST), @@ -1197,6 +1215,10 @@ ndk::ScopedAStatus StaIface::setCountryCodeInternal( const std::vector<uint8_t> &code) { struct wpa_supplicant *wpa_s = retrieveIfacePtr(); + //2-Character alphanumeric country code + if (code.size() != 2) { + return createStatus(SupplicantStatusCode::FAILURE_UNKNOWN); + } ndk::ScopedAStatus status = doOneArgDriverCommand( wpa_s, kSetCountryCode, std::string(std::begin(code), std::end(code))); @@ -1218,6 +1240,9 @@ ndk::ScopedAStatus StaIface::startWpsRegistrarInternal( const std::vector<uint8_t> &bssid, const std::string &pin) { struct wpa_supplicant *wpa_s = retrieveIfacePtr(); + if (bssid.size() != ETH_ALEN) { + return createStatus(SupplicantStatusCode::FAILURE_UNKNOWN); + } if (wpas_wps_start_reg(wpa_s, bssid.data(), pin.c_str(), nullptr)) { return createStatus(SupplicantStatusCode::FAILURE_UNKNOWN); } @@ -1228,6 +1253,9 @@ ndk::ScopedAStatus StaIface::startWpsPbcInternal( const std::vector<uint8_t> &bssid) { struct wpa_supplicant *wpa_s = retrieveIfacePtr(); + if (bssid.size() != ETH_ALEN) { + return createStatus(SupplicantStatusCode::FAILURE_UNKNOWN); + } const uint8_t *bssid_addr = is_zero_ether_addr(bssid.data()) ? nullptr : bssid.data(); if (wpas_wps_start_pbc(wpa_s, bssid_addr, 0, 0)) { @@ -1250,6 +1278,9 @@ std::pair<std::string, ndk::ScopedAStatus> StaIface::startWpsPinDisplayInternal( const std::vector<uint8_t> &bssid) { struct wpa_supplicant *wpa_s = retrieveIfacePtr(); + if (bssid.size() != ETH_ALEN) { + return {"", createStatus(SupplicantStatusCode::FAILURE_UNKNOWN)}; + } const uint8_t *bssid_addr = is_zero_ether_addr(bssid.data()) ? nullptr : bssid.data(); int pin = @@ -1621,6 +1652,9 @@ StaIface::generateDppBootstrapInfoForResponderInternal( } cmd += " chan=" + listen_channel_str; + if (mac_address.size() != ETH_ALEN) { + return {bootstrap_info, createStatus(SupplicantStatusCode::FAILURE_UNKNOWN)}; + } cmd += " mac="; for (int i = 0;i < 6;i++) { snprintf(buf, sizeof(buf), "%02x", mac_address[i]); diff --git a/wpa_supplicant/dpp_supplicant.c b/wpa_supplicant/dpp_supplicant.c index b6dbc98a..bcf614b9 100644 --- a/wpa_supplicant/dpp_supplicant.c +++ b/wpa_supplicant/dpp_supplicant.c @@ -28,7 +28,7 @@ #include "scan.h" #include "notify.h" #include "dpp_supplicant.h" -#include "aidl.h" +#include "aidl/aidl.h" static int wpas_dpp_listen_start(struct wpa_supplicant *wpa_s, diff --git a/wpa_supplicant/notify.c b/wpa_supplicant/notify.c index 8e31824f..ec223d80 100644 --- a/wpa_supplicant/notify.c +++ b/wpa_supplicant/notify.c @@ -24,7 +24,7 @@ #include "p2p_supplicant.h" #include "sme.h" #include "notify.h" -#include "aidl.h" +#include "aidl/aidl.h" int wpas_notify_supplicant_initialized(struct wpa_global *global) { |