net/namespace: Update rtnl_net_dumpid for strict data checking
authorDavid Ahern <dsahern@gmail.com>
Mon, 8 Oct 2018 03:16:38 +0000 (20:16 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 8 Oct 2018 17:39:05 +0000 (10:39 -0700)
Update rtnl_net_dumpid for strict data checking. If the flag is set,
the dump request is expected to have an rtgenmsg struct as the header
which has the family as the only element. No data may be appended.

Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/net_namespace.c

index 670c84b1bfc23bbb9dde13b4df21a503350d390e..fefe72774aeb3a78d2bec6894cd9494741a78ee4 100644 (file)
@@ -853,6 +853,12 @@ static int rtnl_net_dumpid(struct sk_buff *skb, struct netlink_callback *cb)
                .s_idx = cb->args[0],
        };
 
+       if (cb->strict_check &&
+           nlmsg_attrlen(cb->nlh, sizeof(struct rtgenmsg))) {
+                       NL_SET_ERR_MSG(cb->extack, "Unknown data in network namespace id dump request");
+                       return -EINVAL;
+       }
+
        spin_lock_bh(&net->nsid_lock);
        idr_for_each(&net->netns_ids, rtnl_net_dumpid_one, &net_cb);
        spin_unlock_bh(&net->nsid_lock);