Fix wpa_key_mgmt_*() helper functions to handle multiple bits

These can be used in some cases with a bitfield having multiple
AKMs enabled (e.g., WPA-PSK and WPA-PSK-SHA256). Address those
cases by checking whether any of the matching AKM are included.
This commit is contained in:
Jouni Malinen 2011-04-08 19:11:54 +03:00 committed by Jouni Malinen
parent a1ca02927a
commit 03d3f28a69

View file

@ -46,28 +46,28 @@ typedef enum { FALSE = 0, TRUE = 1 } Boolean;
static inline int wpa_key_mgmt_wpa_ieee8021x(int akm) static inline int wpa_key_mgmt_wpa_ieee8021x(int akm)
{ {
return akm == WPA_KEY_MGMT_IEEE8021X || return !!(akm & (WPA_KEY_MGMT_IEEE8021X |
akm == WPA_KEY_MGMT_FT_IEEE8021X || WPA_KEY_MGMT_FT_IEEE8021X |
akm == WPA_KEY_MGMT_IEEE8021X_SHA256; WPA_KEY_MGMT_IEEE8021X_SHA256));
} }
static inline int wpa_key_mgmt_wpa_psk(int akm) static inline int wpa_key_mgmt_wpa_psk(int akm)
{ {
return akm == WPA_KEY_MGMT_PSK || return !!(akm & (WPA_KEY_MGMT_PSK |
akm == WPA_KEY_MGMT_FT_PSK || WPA_KEY_MGMT_FT_PSK |
akm == WPA_KEY_MGMT_PSK_SHA256; WPA_KEY_MGMT_PSK_SHA256));
} }
static inline int wpa_key_mgmt_ft(int akm) static inline int wpa_key_mgmt_ft(int akm)
{ {
return akm == WPA_KEY_MGMT_FT_PSK || return !!(akm & (WPA_KEY_MGMT_FT_PSK |
akm == WPA_KEY_MGMT_FT_IEEE8021X; WPA_KEY_MGMT_FT_IEEE8021X));
} }
static inline int wpa_key_mgmt_sha256(int akm) static inline int wpa_key_mgmt_sha256(int akm)
{ {
return akm == WPA_KEY_MGMT_PSK_SHA256 || return !!(akm & (WPA_KEY_MGMT_PSK_SHA256 |
akm == WPA_KEY_MGMT_IEEE8021X_SHA256; WPA_KEY_MGMT_IEEE8021X_SHA256));
} }
static inline int wpa_key_mgmt_wpa(int akm) static inline int wpa_key_mgmt_wpa(int akm)