aboutsummaryrefslogtreecommitdiffstats
path: root/src/drivers
diff options
context:
space:
mode:
authorDmitry Shmidt <dimitrysh@google.com>2014-06-02 13:50:35 -0700
committerDmitry Shmidt <dimitrysh@google.com>2014-06-02 13:50:35 -0700
commit717574375e969e8272c6d1a26137286eac158abb (patch)
treecd44844dacf9673caeedbad792d6f89f39fdf49c /src/drivers
parent76cd2cc44b62e858f1897ce58f4ce7d0174e8839 (diff)
downloadandroid_external_wpa_supplicant_8-717574375e969e8272c6d1a26137286eac158abb.tar.gz
android_external_wpa_supplicant_8-717574375e969e8272c6d1a26137286eac158abb.tar.bz2
android_external_wpa_supplicant_8-717574375e969e8272c6d1a26137286eac158abb.zip
Cumulative patch from commit 801e117376e13d5b3c50f1627b93a949529fdf99
801e117 Fix validation of RSN EAPOL-Key version for GCMP with PMF 3d4d234 FT: Fix GTK rekeying after FT protocol d3d0483 nl80211: Work around error case prints for nl_recvmsgs on Android 8a387a2 P2P NFC: Fix use of freed memory df48efc Fix external radio work stopping to not read freed memory 13c3303 SAE: Fix memory leak in random number generation d92bdf9 hostapd: Make sure hapd->drv_priv gets cleared on driver deinit 438e133 hostapd: Use helper function to avoid duplicate deinit calls ac1a224 hostapd: Clean up if interface setup fails 81c4fca hostapd: Reset hapd->interface_add properly 3fbd036 hostapd: Prevent double interface disabling from segfaulting ea39367 nl80211: Fix wpa_driver_nl80211_if_add() failure paths b77aeae Interworking: Re-trigger scan if no connect attempt is done b523973 RADIUS client: Trigger failover more quickly if socket is not valid 09844c0 RADIUS client: Do not flush pending messages if server did not change 5d67bf1 hostapd: Fix configuration of multiple RADIUS servers with SET 70d4084 RADIUS client: Fix socket close/re-open on server change d045cc8 RADIUS client: Fix crash issue in radius_client_timer() c1fb75a RADIUS client: Handle ENETUNREACH similarly to other failure cases 9ed4076 RADIUS client: Do not try to send message without socket cc0b7cb hostapd_cli: Fix segmentation fault with interface command 114153b P2P: Debug print channel lists for invitation processing 4eb3b76 OpenSSL: Fix OCSP certificate debug print to use wpa_printf f6fb192 HS 2.0R2: Fix subscr_remediation_method for RADIUS server 74879f3 Remove extra newline from a debug print Change-Id: I82d4f00501fabb8b325e4461178b45e7b2c0178e Signed-off-by: Dmitry Shmidt <dimitrysh@google.com>
Diffstat (limited to 'src/drivers')
-rw-r--r--src/drivers/driver_nl80211.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index 9f7d0f56..75686538 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -652,7 +652,7 @@ static int send_and_recv(struct nl80211_global *global,
while (err > 0) {
int res = nl_recvmsgs(nl_handle, cb);
- if (res) {
+ if (res < 0) {
wpa_printf(MSG_INFO,
"nl80211: %s->nl_recvmsgs failed: %d",
__func__, res);
@@ -910,7 +910,7 @@ static void nl80211_recv_beacons(int sock, void *eloop_ctx, void *handle)
wpa_printf(MSG_EXCESSIVE, "nl80211: Beacon event message available");
res = nl_recvmsgs(handle, w->nl_cb);
- if (res) {
+ if (res < 0) {
wpa_printf(MSG_INFO, "nl80211: %s->nl_recvmsgs failed: %d",
__func__, res);
}
@@ -3276,7 +3276,7 @@ static void wpa_driver_nl80211_event_receive(int sock, void *eloop_ctx,
wpa_printf(MSG_MSGDUMP, "nl80211: Event message available");
res = nl_recvmsgs(handle, cb);
- if (res) {
+ if (res < 0) {
wpa_printf(MSG_INFO, "nl80211: %s->nl_recvmsgs failed: %d",
__func__, res);
}
@@ -10107,19 +10107,22 @@ static int wpa_driver_nl80211_if_add(void *priv, enum wpa_driver_if_type type,
if (linux_get_ifhwaddr(drv->global->ioctl_sock, ifname,
new_addr) < 0) {
- nl80211_remove_iface(drv, ifidx);
+ if (added)
+ nl80211_remove_iface(drv, ifidx);
return -1;
}
if (nl80211_addr_in_use(drv->global, new_addr)) {
wpa_printf(MSG_DEBUG, "nl80211: Allocate new address "
"for P2P group interface");
if (nl80211_p2p_interface_addr(drv, new_addr) < 0) {
- nl80211_remove_iface(drv, ifidx);
+ if (added)
+ nl80211_remove_iface(drv, ifidx);
return -1;
}
if (linux_set_ifhwaddr(drv->global->ioctl_sock, ifname,
new_addr) < 0) {
- nl80211_remove_iface(drv, ifidx);
+ if (added)
+ nl80211_remove_iface(drv, ifidx);
return -1;
}
}
@@ -10148,7 +10151,8 @@ static int wpa_driver_nl80211_if_add(void *priv, enum wpa_driver_if_type type,
if (linux_set_iface_flags(drv->global->ioctl_sock, ifname, 1))
{
- nl80211_remove_iface(drv, ifidx);
+ if (added)
+ nl80211_remove_iface(drv, ifidx);
os_free(new_bss);
return -1;
}