From 48c02dc8655ae21e1b4dbcd33a353b371bf21a50 Mon Sep 17 00:00:00 2001 From: mentor Date: Wed, 2 Jan 2008 23:43:23 +0000 Subject: [PATCH] Update comments and value handling for key indexes to make clear which values should /never/ be used (as per discussion with benoit). git-svn-id: http://madwifi-project.org/svn/madwifi/trunk@3111 0192ed92-7a03-0410-a25b-9323aeb14dbd --- net80211/ieee80211_ioctl.h | 2 ++ net80211/ieee80211_wireless.c | 12 +++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/net80211/ieee80211_ioctl.h b/net80211/ieee80211_ioctl.h index 5d422b8..06ecb52 100644 --- a/net80211/ieee80211_ioctl.h +++ b/net80211/ieee80211_ioctl.h @@ -221,6 +221,8 @@ struct ieee80211req_key { * to IEEE80211_KEYIX_NONE when deleting a unicast key. */ struct ieee80211req_del_key { + /* NB: This is different to ieee80211_keyix_t, but this is OK as + * values are unique over the low order bits. */ u_int8_t idk_keyix; /* key index */ u_int8_t idk_macaddr[IEEE80211_ADDR_LEN]; }; diff --git a/net80211/ieee80211_wireless.c b/net80211/ieee80211_wireless.c index a6032da..f026c6c 100644 --- a/net80211/ieee80211_wireless.c +++ b/net80211/ieee80211_wireless.c @@ -3292,6 +3292,11 @@ ieee80211_ioctl_setkey(struct net_device *dev, struct iw_request_info *info, if (ni == NULL) return -ENOENT; wk = &ni->ni_ucastkey; + } else if (((uint8_t)IEEE80211_KEYIX_NONE <= kix) && + (kix < IEEE80211_KEYIX_NONE)) { + /* These values must never be used as they are ambiguous as + * some of the API uses 8-bit integers for keyix. */ + return -EINVAL; } else { if (kix >= IEEE80211_WEP_NKID) return -EINVAL; @@ -3355,6 +3360,11 @@ ieee80211_ioctl_getkey(struct net_device *dev, struct iwreq *iwr) if (ni == NULL) return -ENOENT; wk = &ni->ni_ucastkey; + } else if (((uint8_t)IEEE80211_KEYIX_NONE <= kix) && + (kix < IEEE80211_KEYIX_NONE)) { + /* These values must never be used as they are ambiguous as + * some of the API uses 8-bit integers for keyix. */ + return -EINVAL; } else { if (kix >= IEEE80211_WEP_NKID) return -EINVAL; @@ -3399,7 +3409,7 @@ ieee80211_ioctl_delkey(struct net_device *dev, struct iw_request_info *info, ieee80211_keyix_t kix; kix = dk->idk_keyix; - if (dk->idk_keyix == (u_int8_t) IEEE80211_KEYIX_NONE) + if (dk->idk_keyix == (u_int8_t)IEEE80211_KEYIX_NONE) kix = IEEE80211_KEYIX_NONE; if (kix == IEEE80211_KEYIX_NONE) { -- 2.35.1