diff options
Diffstat (limited to 'lib/nlattr.c')
| -rw-r--r-- | lib/nlattr.c | 3 | 
1 files changed, 3 insertions, 0 deletions
diff --git a/lib/nlattr.c b/lib/nlattr.c index 9055e8b4d144..489e15bde5c1 100644 --- a/lib/nlattr.c +++ b/lib/nlattr.c @@ -10,6 +10,7 @@  #include <linux/kernel.h>  #include <linux/errno.h>  #include <linux/jiffies.h> +#include <linux/nospec.h>  #include <linux/skbuff.h>  #include <linux/string.h>  #include <linux/types.h> @@ -381,6 +382,7 @@ static int validate_nla(const struct nlattr *nla, int maxtype,  	if (type <= 0 || type > maxtype)  		return 0; +	type = array_index_nospec(type, maxtype + 1);  	pt = &policy[type];  	BUG_ON(pt->type > NLA_TYPE_MAX); @@ -596,6 +598,7 @@ static int __nla_validate_parse(const struct nlattr *head, int len, int maxtype,  			}  			continue;  		} +		type = array_index_nospec(type, maxtype + 1);  		if (policy) {  			int err = validate_nla(nla, maxtype, policy,  					       validate, extack, depth);  |