cfg80211: Validate cipher suite against supported ciphers
Instead of using a hardcoded list of cipher suites in nl80211.c, use a shared function in util.c to verify that the driver advertises support for the specified cipher. This provides more accurate validation of the values and allows vendor-specific cipher suites to be added in drivers. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:

committed by
John W. Linville

parent
6d30240e3d
commit
38ba3c57af
@@ -151,12 +151,19 @@ void ieee80211_set_bitrate_flags(struct wiphy *wiphy)
|
||||
set_mandatory_flags_band(wiphy->bands[band], band);
|
||||
}
|
||||
|
||||
bool cfg80211_supported_cipher_suite(struct wiphy *wiphy, u32 cipher)
|
||||
{
|
||||
int i;
|
||||
for (i = 0; i < wiphy->n_cipher_suites; i++)
|
||||
if (cipher == wiphy->cipher_suites[i])
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
int cfg80211_validate_key_settings(struct cfg80211_registered_device *rdev,
|
||||
struct key_params *params, int key_idx,
|
||||
bool pairwise, const u8 *mac_addr)
|
||||
{
|
||||
int i;
|
||||
|
||||
if (key_idx > 5)
|
||||
return -EINVAL;
|
||||
|
||||
@@ -226,10 +233,7 @@ int cfg80211_validate_key_settings(struct cfg80211_registered_device *rdev,
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < rdev->wiphy.n_cipher_suites; i++)
|
||||
if (params->cipher == rdev->wiphy.cipher_suites[i])
|
||||
break;
|
||||
if (i == rdev->wiphy.n_cipher_suites)
|
||||
if (!cfg80211_supported_cipher_suite(&rdev->wiphy, params->cipher))
|
||||
return -EINVAL;
|
||||
|
||||
return 0;
|
||||
|
Reference in New Issue
Block a user