Fix endless loop in PSK fetching with PSK-from-RADIUS
Commit 05ab9712b9
added support for
fetching WPA PSK from an external RADIUS server and changed
hostapd_wpa_auth_get_psk() to always return the RADIUS supplied PSK (if
set) and ignore the prev_psk parameter for iteration. Fix this by
appending the RADIUS supplied PSK to the list iterated by
hostapd_get_psk and thus returning NULL when prev_psk == sta->psk
(RADIUS).
Signed-hostap: M. Braun <michael-dev@fami-braun.de>
This commit is contained in:
parent
addde1399e
commit
59dff51dc8
1 changed files with 9 additions and 3 deletions
|
@ -184,9 +184,15 @@ static const u8 * hostapd_wpa_auth_get_psk(void *ctx, const u8 *addr,
|
|||
{
|
||||
struct hostapd_data *hapd = ctx;
|
||||
struct sta_info *sta = ap_get_sta(hapd, addr);
|
||||
if (sta && sta->psk)
|
||||
return sta->psk;
|
||||
return hostapd_get_psk(hapd->conf, addr, prev_psk);
|
||||
const u8 *psk = hostapd_get_psk(hapd->conf, addr, prev_psk);
|
||||
/*
|
||||
* This is about to iterate over all psks, prev_psk gives the last
|
||||
* returned psk which should not be returned again.
|
||||
* logic list (all hostapd_get_psk; sta->psk)
|
||||
*/
|
||||
if (sta && sta->psk && !psk && sta->psk != prev_psk)
|
||||
psk = sta->psk;
|
||||
return psk;
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue