mac80211: validate cipher scheme PN length better
Currently, a cipher scheme can advertise an arbitrarily long sequence counter, but mac80211 only supports up to 16 bytes and the initial value from userspace will be truncated. Fix two things: * don't allow the driver to register anything longer than the 16 bytes that mac80211 reserves space for * require userspace to specify a starting value with the correct length (or none at all) Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
@@ -768,8 +768,11 @@ static int ieee80211_init_cipher_suites(struct ieee80211_local *local)
|
||||
suites[w++] = WLAN_CIPHER_SUITE_BIP_GMAC_256;
|
||||
}
|
||||
|
||||
for (r = 0; r < local->hw.n_cipher_schemes; r++)
|
||||
for (r = 0; r < local->hw.n_cipher_schemes; r++) {
|
||||
suites[w++] = cs[r].cipher;
|
||||
if (WARN_ON(cs[r].pn_len > IEEE80211_MAX_PN_LEN))
|
||||
return -EINVAL;
|
||||
}
|
||||
}
|
||||
|
||||
local->hw.wiphy->cipher_suites = suites;
|
||||
|
||||
Reference in New Issue
Block a user