[PATCH 3/3] STA: Fix wpa_clear_keys() PTK key deletion logic

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



We have to delete PTK keys when either BIT(0) or BIT(15) are zero and
not only when both are zero.

Signed-off-by: Alexander Wetzel <alexander@xxxxxxxxxxxxxx>
---

I think that is a regression for "normal" cases which keep keys
installed in HW we wanted to remove. (I've not tried that with tests.)

By using ~wpa_s->keys_cleared we basically get "wpa_s->keys_set" and we
can then check if either PTK ID 0 or PTK ID 1 are installed.

Maybe a sample:
1111 1111 1111 1110 = only PTK ID 0 installed
wpa_s->keys_cleared & (BIT(0) | BIT(15)) == TRUE
!(wpa_s->keys_cleared & (BIT(0) | BIT(15)) == FALSE

With the logic from the patch:
0000 0000 0000 0001 = only PTK ID 0 installed after reverting the bits
~wpa_s->keys_cleared & (BIT(0) | BIT(15)) == TRUE

And we enter the block which will check both bits and remove the keys
when necessary.

 wpa_supplicant/wpa_supplicant.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index f11bac017..a01a3e748 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -749,7 +749,7 @@ void wpa_clear_keys(struct wpa_supplicant *wpa_s, const u8 *addr)
 				NULL, 0, KEY_FLAG_GROUP);
 	}
 	/* Pairwise Key ID 1 for Extended Key ID is tracked in bit 15 */
-	if (!(wpa_s->keys_cleared & (BIT(0) | BIT(15))) && addr &&
+	if (~wpa_s->keys_cleared & (BIT(0) | BIT(15)) && addr &&
 	    !is_zero_ether_addr(addr)) {
 		if (!(wpa_s->keys_cleared & BIT(0)))
 			wpa_drv_set_key(wpa_s, WPA_ALG_NONE, addr, 0, 0, NULL,
-- 
2.25.2


_______________________________________________
Hostap mailing list
Hostap@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/hostap



[Index of Archives]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux