2009-03-27 18:53:06

by Jouni Malinen

[permalink] [raw]
Subject: [PATCH] nl80211: Require auth type for NL80211_CMD_AUTHENTICATE

NL80211_ATTR_AUTH_TYPE is a required parameter for
NL80211_CMD_AUTHENTICATE. We are currently (by chance) defaulting to
open system authentication if the attribute is not specified. It is
better to just reject the invalid command.

Signed-off-by: Jouni Malinen <[email protected]>

---
net/wireless/nl80211.c | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)

--- uml.orig/net/wireless/nl80211.c 2009-03-27 20:33:21.000000000 +0200
+++ uml/net/wireless/nl80211.c 2009-03-27 20:34:36.000000000 +0200
@@ -2760,6 +2760,9 @@ static int nl80211_authenticate(struct s
if (!info->attrs[NL80211_ATTR_MAC])
return -EINVAL;

+ if (!info->attrs[NL80211_ATTR_AUTH_TYPE])
+ return -EINVAL;
+
rtnl_lock();

err = get_drv_dev_by_info_ifindex(info->attrs, &drv, &dev);
@@ -2806,13 +2809,10 @@ static int nl80211_authenticate(struct s
req.ie_len = nla_len(info->attrs[NL80211_ATTR_IE]);
}

- if (info->attrs[NL80211_ATTR_AUTH_TYPE]) {
- req.auth_type =
- nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]);
- if (!nl80211_valid_auth_type(req.auth_type)) {
- err = -EINVAL;
- goto out;
- }
+ req.auth_type = nla_get_u32(info->attrs[NL80211_ATTR_AUTH_TYPE]);
+ if (!nl80211_valid_auth_type(req.auth_type)) {
+ err = -EINVAL;
+ goto out;
}

err = drv->ops->auth(&drv->wiphy, dev, &req);

--
Jouni Malinen PGP id EFC895FA