netlink: allow empty nested attributes
validate_nla() currently doesn't allow empty nested attributes. This makes userspace code unnecessarily complicated when starting and ending the nested attribute is done by generic upper level code and the inner attributes are dumped by a module. Add a special case to accept empty nested attributes. When the nested attribute is non empty, the same checks as before are performed. Signed-off-by: Patrick McHardy <kaber@trash.net> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
ed77a89c30
commit
ea5693ccc5
1 changed files with 6 additions and 0 deletions
|
@ -83,6 +83,12 @@ static int validate_nla(struct nlattr *nla, int maxtype,
|
|||
if (attrlen < NLA_ALIGN(pt->len) + NLA_HDRLEN + nla_len(nla))
|
||||
return -ERANGE;
|
||||
break;
|
||||
case NLA_NESTED:
|
||||
/* a nested attributes is allowed to be empty; if its not,
|
||||
* it must have a size of at least NLA_HDRLEN.
|
||||
*/
|
||||
if (attrlen == 0)
|
||||
break;
|
||||
default:
|
||||
if (pt->len)
|
||||
minlen = pt->len;
|
||||
|
|
Loading…
Reference in a new issue