nl80211: require and validate vendor command policy
Require that each vendor command give a policy of its sub-attributes in NL80211_ATTR_VENDOR_DATA, and then (stricly) check the contents, including the NLA_F_NESTED flag that we couldn't check on the outer layer because there we don't know yet. It is possible to use VENDOR_CMD_RAW_DATA for raw data, but then no nested data can be given (NLA_F_NESTED flag must be clear) and the data is just passed as is to the command. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
@@ -859,6 +859,19 @@ int wiphy_register(struct wiphy *wiphy)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
for (i = 0; i < rdev->wiphy.n_vendor_commands; i++) {
|
||||
/*
|
||||
* Validate we have a policy (can be explicitly set to
|
||||
* VENDOR_CMD_RAW_DATA which is non-NULL) and also that
|
||||
* we have at least one of doit/dumpit.
|
||||
*/
|
||||
if (WARN_ON(!rdev->wiphy.vendor_commands[i].policy))
|
||||
return -EINVAL;
|
||||
if (WARN_ON(!rdev->wiphy.vendor_commands[i].doit &&
|
||||
!rdev->wiphy.vendor_commands[i].dumpit))
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
if (WARN_ON(rdev->wiphy.wowlan && rdev->wiphy.wowlan->n_patterns &&
|
||||
(!rdev->wiphy.wowlan->pattern_min_len ||
|
||||
|
Reference in New Issue
Block a user