diff options
Diffstat (limited to 'net/wireless/util.c')
-rw-r--r-- | net/wireless/util.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/net/wireless/util.c b/net/wireless/util.c index 0675f513e7b9..9e6e2aaa7766 100644 --- a/net/wireless/util.c +++ b/net/wireless/util.c | |||
@@ -218,7 +218,7 @@ int cfg80211_validate_key_settings(struct cfg80211_registered_device *rdev, | |||
218 | struct key_params *params, int key_idx, | 218 | struct key_params *params, int key_idx, |
219 | bool pairwise, const u8 *mac_addr) | 219 | bool pairwise, const u8 *mac_addr) |
220 | { | 220 | { |
221 | if (key_idx > 5) | 221 | if (key_idx < 0 || key_idx > 5) |
222 | return -EINVAL; | 222 | return -EINVAL; |
223 | 223 | ||
224 | if (!pairwise && mac_addr && !(rdev->wiphy.flags & WIPHY_FLAG_IBSS_RSN)) | 224 | if (!pairwise && mac_addr && !(rdev->wiphy.flags & WIPHY_FLAG_IBSS_RSN)) |
@@ -249,7 +249,13 @@ int cfg80211_validate_key_settings(struct cfg80211_registered_device *rdev, | |||
249 | /* Disallow BIP (group-only) cipher as pairwise cipher */ | 249 | /* Disallow BIP (group-only) cipher as pairwise cipher */ |
250 | if (pairwise) | 250 | if (pairwise) |
251 | return -EINVAL; | 251 | return -EINVAL; |
252 | if (key_idx < 4) | ||
253 | return -EINVAL; | ||
252 | break; | 254 | break; |
255 | case WLAN_CIPHER_SUITE_WEP40: | ||
256 | case WLAN_CIPHER_SUITE_WEP104: | ||
257 | if (key_idx > 3) | ||
258 | return -EINVAL; | ||
253 | default: | 259 | default: |
254 | break; | 260 | break; |
255 | } | 261 | } |
@@ -906,7 +912,7 @@ void cfg80211_upload_connect_keys(struct wireless_dev *wdev) | |||
906 | if (!wdev->connect_keys) | 912 | if (!wdev->connect_keys) |
907 | return; | 913 | return; |
908 | 914 | ||
909 | for (i = 0; i < 6; i++) { | 915 | for (i = 0; i < 4; i++) { |
910 | if (!wdev->connect_keys->params[i].cipher) | 916 | if (!wdev->connect_keys->params[i].cipher) |
911 | continue; | 917 | continue; |
912 | if (rdev_add_key(rdev, dev, i, false, NULL, | 918 | if (rdev_add_key(rdev, dev, i, false, NULL, |
@@ -919,9 +925,6 @@ void cfg80211_upload_connect_keys(struct wireless_dev *wdev) | |||
919 | netdev_err(dev, "failed to set defkey %d\n", i); | 925 | netdev_err(dev, "failed to set defkey %d\n", i); |
920 | continue; | 926 | continue; |
921 | } | 927 | } |
922 | if (wdev->connect_keys->defmgmt == i) | ||
923 | if (rdev_set_default_mgmt_key(rdev, dev, i)) | ||
924 | netdev_err(dev, "failed to set mgtdef %d\n", i); | ||
925 | } | 928 | } |
926 | 929 | ||
927 | kzfree(wdev->connect_keys); | 930 | kzfree(wdev->connect_keys); |