diff options
author | Jouni Malinen <jouni.malinen@atheros.com> | 2009-05-15 05:38:32 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-05-20 14:46:25 -0400 |
commit | 9f26a952210e44691f784b77bf1f83a500d63f58 (patch) | |
tree | a11a5ab475cc8cfa61362e57b6b6c4e018d21996 /net/wireless/util.c | |
parent | cc65965cbb24d2ca2bb70f26cac9d7243349e7e3 (diff) |
nl80211: Validate NL80211_ATTR_KEY_SEQ length
Validate RSC (NL80211_ATTR_KEY_SEQ) length in nl80211/cfg80211 instead
of having to do this in all the drivers.
Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/wireless/util.c')
-rw-r--r-- | net/wireless/util.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/net/wireless/util.c b/net/wireless/util.c index beb226e78cd7..b94c8604ad7c 100644 --- a/net/wireless/util.c +++ b/net/wireless/util.c | |||
@@ -181,5 +181,20 @@ int cfg80211_validate_key_settings(struct key_params *params, int key_idx, | |||
181 | return -EINVAL; | 181 | return -EINVAL; |
182 | } | 182 | } |
183 | 183 | ||
184 | if (params->seq) { | ||
185 | switch (params->cipher) { | ||
186 | case WLAN_CIPHER_SUITE_WEP40: | ||
187 | case WLAN_CIPHER_SUITE_WEP104: | ||
188 | /* These ciphers do not use key sequence */ | ||
189 | return -EINVAL; | ||
190 | case WLAN_CIPHER_SUITE_TKIP: | ||
191 | case WLAN_CIPHER_SUITE_CCMP: | ||
192 | case WLAN_CIPHER_SUITE_AES_CMAC: | ||
193 | if (params->seq_len != 6) | ||
194 | return -EINVAL; | ||
195 | break; | ||
196 | } | ||
197 | } | ||
198 | |||
184 | return 0; | 199 | return 0; |
185 | } | 200 | } |