aboutsummaryrefslogtreecommitdiffstats
path: root/wpa_supplicant
diff options
context:
space:
mode:
authorJouni Malinen <jouni@qca.qualcomm.com>2013-11-29 12:56:11 (GMT)
committerJouni Malinen <j@w1.fi>2013-12-26 18:50:28 (GMT)
commitc511b321f38957cdece4739968c97a1be001b8ca (patch)
treec9f1c16a0c8aaff4150145d77d509ef1bfd75d2c /wpa_supplicant
parent9d2cb3ec94f3a96864b680de5a8cec0aeed0ff94 (diff)
downloadhostap-c511b321f38957cdece4739968c97a1be001b8ca.zip
hostap-c511b321f38957cdece4739968c97a1be001b8ca.tar.gz
hostap-c511b321f38957cdece4739968c97a1be001b8ca.tar.bz2
WPS: Remove old duplicate network even if key is different
Previously, WPS credential provisioning removed duplicated network entries only if they had identicical SSID, security parameters, and the keys. However, it is possible that the AP has changes its keys and leaving the old entry behind can result in connectibity issues (e.g., with 4-way handshake failing due to use of the old PSK). Fix this by allowing the old network entry to be removed even if the keys (passphrase, PSK, WEP keys) are different. Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
Diffstat (limited to 'wpa_supplicant')
-rw-r--r--wpa_supplicant/wps_supplicant.c25
1 files changed, 0 insertions, 25 deletions
diff --git a/wpa_supplicant/wps_supplicant.c b/wpa_supplicant/wps_supplicant.c
index 4db963c..7ff05d7 100644
--- a/wpa_supplicant/wps_supplicant.c
+++ b/wpa_supplicant/wps_supplicant.c
@@ -260,31 +260,6 @@ static void wpas_wps_remove_dup_network(struct wpa_supplicant *wpa_s,
ssid->group_cipher != new_ssid->group_cipher)
continue;
- if (ssid->passphrase && new_ssid->passphrase) {
- if (os_strlen(ssid->passphrase) !=
- os_strlen(new_ssid->passphrase))
- continue;
- if (os_strcmp(ssid->passphrase, new_ssid->passphrase) !=
- 0)
- continue;
- } else if (ssid->passphrase || new_ssid->passphrase)
- continue;
-
- if ((ssid->psk_set || new_ssid->psk_set) &&
- os_memcmp(ssid->psk, new_ssid->psk, sizeof(ssid->psk)) != 0)
- continue;
-
- if (ssid->auth_alg == WPA_ALG_WEP) {
- if (ssid->wep_tx_keyidx != new_ssid->wep_tx_keyidx)
- continue;
- if (os_memcmp(ssid->wep_key, new_ssid->wep_key,
- sizeof(ssid->wep_key)))
- continue;
- if (os_memcmp(ssid->wep_key_len, new_ssid->wep_key_len,
- sizeof(ssid->wep_key_len)))
- continue;
- }
-
/* Remove the duplicated older network entry. */
wpa_printf(MSG_DEBUG, "Remove duplicate network %d", ssid->id);
wpas_notify_network_removed(wpa_s, ssid);