cfg80211: allow connect keys only with default (TX) key
[cascardo/linux.git] / net / wireless / nl80211.c
index 71af96e..f2a77c3 100644 (file)
@@ -848,6 +848,15 @@ nl80211_parse_connkeys(struct cfg80211_registered_device *rdev,
        struct nlattr *key;
        struct cfg80211_cached_keys *result;
        int rem, err, def = 0;
+       bool have_key = false;
+
+       nla_for_each_nested(key, keys, rem) {
+               have_key = true;
+               break;
+       }
+
+       if (!have_key)
+               return NULL;
 
        result = kzalloc(sizeof(*result), GFP_KERNEL);
        if (!result)
@@ -895,6 +904,11 @@ nl80211_parse_connkeys(struct cfg80211_registered_device *rdev,
                        *no_ht = true;
        }
 
+       if (result->def < 0) {
+               err = -EINVAL;
+               goto error;
+       }
+
        return result;
  error:
        kfree(result);