diff options
author | Felix Fietkau <nbd@openwrt.org> | 2014-10-05 10:26:26 +0000 |
---|---|---|
committer | Felix Fietkau <nbd@openwrt.org> | 2014-10-05 10:26:26 +0000 |
commit | 09cdef74a8177ca37bfc81e62f26a71e5c405a1d (patch) | |
tree | a18e94147debf5e27a43adcf0ab44b114c4d81bb /package/network/services | |
parent | e684caba4e9ef79f3faa5c42607c5e2a63b599a0 (diff) | |
download | upstream-09cdef74a8177ca37bfc81e62f26a71e5c405a1d.tar.gz upstream-09cdef74a8177ca37bfc81e62f26a71e5c405a1d.tar.bz2 upstream-09cdef74a8177ca37bfc81e62f26a71e5c405a1d.zip |
hostapd: merge an upstream patch for pmksa cache
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@42762 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package/network/services')
-rw-r--r-- | package/network/services/hostapd/patches/001-fix_pmksa_cache.patch | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/package/network/services/hostapd/patches/001-fix_pmksa_cache.patch b/package/network/services/hostapd/patches/001-fix_pmksa_cache.patch new file mode 100644 index 0000000000..76a3968857 --- /dev/null +++ b/package/network/services/hostapd/patches/001-fix_pmksa_cache.patch @@ -0,0 +1,32 @@ +From 9c829900bb01d6fb22e78ba78195c78de39f64b9 Mon Sep 17 00:00:00 2001 +From: Jouni Malinen <j@w1.fi> +Date: Sat, 04 Oct 2014 19:11:00 +0000 +Subject: Fix authenticator OKC fetch from PMKSA cache to avoid infinite loop + +If the first entry in the PMKSA cache did not match the station's MAC +address, an infinite loop could be reached in pmksa_cache_get_okc() when +trying to find a PMKSA cache entry for opportunistic key caching cases. +This would only happen if OKC is enabled (okc=1 included in the +configuration file). + +Signed-off-by: Jouni Malinen <j@w1.fi> +--- +--- a/src/ap/pmksa_cache_auth.c ++++ b/src/ap/pmksa_cache_auth.c +@@ -394,15 +394,13 @@ struct rsn_pmksa_cache_entry * pmksa_cac + struct rsn_pmksa_cache_entry *entry; + u8 new_pmkid[PMKID_LEN]; + +- entry = pmksa->pmksa; +- while (entry) { ++ for (entry = pmksa->pmksa; entry; entry = entry->next) { + if (os_memcmp(entry->spa, spa, ETH_ALEN) != 0) + continue; + rsn_pmkid(entry->pmk, entry->pmk_len, aa, spa, new_pmkid, + wpa_key_mgmt_sha256(entry->akmp)); + if (os_memcmp(new_pmkid, pmkid, PMKID_LEN) == 0) + return entry; +- entry = entry->next; + } + return NULL; + } |