aboutsummaryrefslogtreecommitdiffstats
path: root/net/wireless/wext-compat.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2014-09-10 13:39:56 +0300
committerJohannes Berg <johannes.berg@intel.com>2014-09-11 12:07:28 +0200
commit538c9eb8b3fd33d3a0722b2c04ec4f574eaa6e9f (patch)
tree738b71b941b78e7708c158eb79b7fabeddf480f4 /net/wireless/wext-compat.c
parentmac80211: clear key material when freeing keys (diff)
downloadlinux-dev-538c9eb8b3fd33d3a0722b2c04ec4f574eaa6e9f.tar.xz
linux-dev-538c9eb8b3fd33d3a0722b2c04ec4f574eaa6e9f.zip
cfg80211: clear wext keys when freeing and removing them
When freeing the keys stored for wireless extensions, clear the memory to avoid having the key material stick around in memory "forever". Similarly, when userspace overwrites a key, actually clear it instead of just setting the key length to zero. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/wireless/wext-compat.c')
-rw-r--r--net/wireless/wext-compat.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c
index 11120bb14162..0f47948c572f 100644
--- a/net/wireless/wext-compat.c
+++ b/net/wireless/wext-compat.c
@@ -496,6 +496,8 @@ static int __cfg80211_set_encryption(struct cfg80211_registered_device *rdev,
err = 0;
if (!err) {
if (!addr) {
+ memset(wdev->wext.keys->data[idx], 0,
+ sizeof(wdev->wext.keys->data[idx]));
wdev->wext.keys->params[idx].key_len = 0;
wdev->wext.keys->params[idx].cipher = 0;
}