diff options
author | Johannes Berg <johannes.berg@intel.com> | 2010-08-10 03:46:42 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-08-16 16:45:22 -0400 |
commit | afea0b7af7a0c070da8b2029d721abc930e5f96f (patch) | |
tree | df0879b5404880f74440e3c381215152d7c9794a /net/wireless | |
parent | 5daa8a8e691e28c6c725e7e91319b160b555c615 (diff) |
cfg80211: check if WEP is available for shared key auth
When shared key auth is requested, cfg80211
should verify that the device is capable of
WEP crypto which is required.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/wireless')
-rw-r--r-- | net/wireless/nl80211.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c index 37902a54e9c..bb5b78eebeb 100644 --- a/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c | |||
@@ -3572,6 +3572,21 @@ static int nl80211_authenticate(struct sk_buff *skb, struct genl_info *info) | |||
3572 | if (err) | 3572 | if (err) |
3573 | goto unlock_rtnl; | 3573 | goto unlock_rtnl; |
3574 | 3574 | ||
3575 | if (key.idx >= 0) { | ||
3576 | int i; | ||
3577 | bool ok = false; | ||
3578 | for (i = 0; i < rdev->wiphy.n_cipher_suites; i++) { | ||
3579 | if (key.p.cipher == rdev->wiphy.cipher_suites[i]) { | ||
3580 | ok = true; | ||
3581 | break; | ||
3582 | } | ||
3583 | } | ||
3584 | if (!ok) { | ||
3585 | err = -EINVAL; | ||
3586 | goto out; | ||
3587 | } | ||
3588 | } | ||
3589 | |||
3575 | if (!rdev->ops->auth) { | 3590 | if (!rdev->ops->auth) { |
3576 | err = -EOPNOTSUPP; | 3591 | err = -EOPNOTSUPP; |
3577 | goto out; | 3592 | goto out; |