diff options
| author | Emmanuel Grumbach <emmanuel.grumbach@intel.com> | 2008-06-27 19:50:13 -0400 |
|---|---|---|
| committer | John W. Linville <linville@tuxdriver.com> | 2008-06-30 15:43:53 -0400 |
| commit | 23976efedd5ecb420b87455787c537eb4aed1981 (patch) | |
| tree | 902550e2716af5682de8219da1f228e13a5f0adb | |
| parent | 1bcca3c463e4930cef9986b05165bb0b3eb46f63 (diff) | |
mac80211: don't accept WEP keys other than WEP40 and WEP104
This patch makes mac80211 refuse a WEP key whose length is not WEP40 nor
WEP104.
Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
| -rw-r--r-- | include/net/mac80211.h | 9 | ||||
| -rw-r--r-- | net/mac80211/wext.c | 7 |
2 files changed, 16 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index dae3f9ec1154..bcd1623245cb 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
| @@ -595,6 +595,15 @@ enum ieee80211_key_alg { | |||
| 595 | ALG_CCMP, | 595 | ALG_CCMP, |
| 596 | }; | 596 | }; |
| 597 | 597 | ||
| 598 | /** | ||
| 599 | * enum ieee80211_key_len - key length | ||
| 600 | * @WEP40: WEP 5 byte long key | ||
| 601 | * @WEP104: WEP 13 byte long key | ||
| 602 | */ | ||
| 603 | enum ieee80211_key_len { | ||
| 604 | LEN_WEP40 = 5, | ||
| 605 | LEN_WEP104 = 13, | ||
| 606 | }; | ||
| 598 | 607 | ||
| 599 | /** | 608 | /** |
| 600 | * enum ieee80211_key_flags - key flags | 609 | * enum ieee80211_key_flags - key flags |
diff --git a/net/mac80211/wext.c b/net/mac80211/wext.c index 6106cb79060c..e8404212ad57 100644 --- a/net/mac80211/wext.c +++ b/net/mac80211/wext.c | |||
| @@ -95,6 +95,13 @@ static int ieee80211_set_encryption(struct net_device *dev, u8 *sta_addr, | |||
| 95 | } | 95 | } |
| 96 | } | 96 | } |
| 97 | 97 | ||
| 98 | if (alg == ALG_WEP && | ||
| 99 | key_len != LEN_WEP40 && key_len != LEN_WEP104) { | ||
| 100 | ieee80211_key_free(key); | ||
| 101 | err = -EINVAL; | ||
| 102 | goto out_unlock; | ||
| 103 | } | ||
| 104 | |||
| 98 | ieee80211_key_link(key, sdata, sta); | 105 | ieee80211_key_link(key, sdata, sta); |
| 99 | 106 | ||
| 100 | if (set_tx_key || (!sta && !sdata->default_key && key)) | 107 | if (set_tx_key || (!sta && !sdata->default_key && key)) |
