Re: [PATCH] station: check return of handshake_state_set_pmksa

Denis Kenzior <[email protected]> Wed, 3 Dec 2025 16:19:27 -0600
Newsgroups dev.linux.lists.iwd
Message-ID <[email protected]>
Hi James,

On 12/3/25 9:03 AM, James Prestwood wrote:
> If this fails num_pmkids and pmkids would get set, but to an
> uninitialized buffer. This would then fail to build the handshake
> object later when copying the PMKID.
> ---
>   src/station.c | 10 +++++++---
>   1 file changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/src/station.c b/src/station.c
> index 50997f5f..6c9e8d13 100644
> --- a/src/station.c
> +++ b/src/station.c
> @@ -1378,9 +1378,13 @@ build_ie:
>   					bss->ssid, bss->ssid_len,
>   					info.akm_suites);
>   		if (pmksa) {
> -			handshake_state_set_pmksa(hs, pmksa);
> -			info.num_pmkids = 1;
> -			info.pmkids = hs->pmksa->pmkid;
> +			if (!handshake_state_set_pmksa(hs, pmksa)) {

This seems fishy.  Are you sure you're not masking the real issue here?  Would 
this possibly be related to fast transition re-using an old handshake?  Maybe we 
should not try to use or set the PMKSA for FT ?

> +				l_warn("failed to set PMKSA to handshake");
> +				pmksa_cache_free(pmksa);
> +			} else {
> +				info.num_pmkids = 1;
> +				info.pmkids = hs->pmksa->pmkid;
> +			}
>   		}
>   	}
>   

Regards,
-Denis