summaryrefslogtreecommitdiff
path: root/net/wireless/nl80211.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2010-08-10 09:46:42 +0200
committerJohn W. Linville <linville@tuxdriver.com>2010-08-16 16:45:22 -0400
commitafea0b7af7a0c070da8b2029d721abc930e5f96f (patch)
treedf0879b5404880f74440e3c381215152d7c9794a /net/wireless/nl80211.c
parent5daa8a8e691e28c6c725e7e91319b160b555c615 (diff)
downloadlwn-afea0b7af7a0c070da8b2029d721abc930e5f96f.tar.gz
lwn-afea0b7af7a0c070da8b2029d721abc930e5f96f.zip
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/nl80211.c')
-rw-r--r--net/wireless/nl80211.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/net/wireless/nl80211.c b/net/wireless/nl80211.c
index 37902a54e9c1..bb5b78eebeb2 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)
if (err)
goto unlock_rtnl;
+ if (key.idx >= 0) {
+ int i;
+ bool ok = false;
+ for (i = 0; i < rdev->wiphy.n_cipher_suites; i++) {
+ if (key.p.cipher == rdev->wiphy.cipher_suites[i]) {
+ ok = true;
+ break;
+ }
+ }
+ if (!ok) {
+ err = -EINVAL;
+ goto out;
+ }
+ }
+
if (!rdev->ops->auth) {
err = -EOPNOTSUPP;
goto out;