From mboxrd@z Thu Jan 1 00:00:00 1970 From: David Ahern Subject: [PATCH net-next 16/20] net/namespace: Update rtnl_net_dumpid for strict data checking Date: Thu, 4 Oct 2018 14:33:51 -0700 Message-ID: <20181004213355.14899-17-dsahern@kernel.org> References: <20181004213355.14899-1-dsahern@kernel.org> Cc: christian@brauner.io, jbenc@redhat.com, stephen@networkplumber.org, David Ahern To: netdev@vger.kernel.org, davem@davemloft.net Return-path: Received: from mail.kernel.org ([198.145.29.99]:37588 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728002AbeJEE3Q (ORCPT ); Fri, 5 Oct 2018 00:29:16 -0400 In-Reply-To: <20181004213355.14899-1-dsahern@kernel.org> Sender: netdev-owner@vger.kernel.org List-ID: From: David Ahern 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 --- net/core/net_namespace.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c index 670c84b1bfc2..63659c512ba8 100644 --- a/net/core/net_namespace.c +++ b/net/core/net_namespace.c @@ -844,6 +844,7 @@ static int rtnl_net_dumpid_one(int id, void *peer, void *data) static int rtnl_net_dumpid(struct sk_buff *skb, struct netlink_callback *cb) { + const struct nlmsghdr *nlh = cb->nlh; struct net *net = sock_net(skb->sk); struct rtnl_net_dump_cb net_cb = { .net = net, @@ -853,6 +854,13 @@ static int rtnl_net_dumpid(struct sk_buff *skb, struct netlink_callback *cb) .s_idx = cb->args[0], }; + if (cb->strict_check) { + if (nlh->nlmsg_len != nlmsg_msg_size(sizeof(struct rtgenmsg))) { + NL_SET_ERR_MSG(cb->extack, "Unknown data in 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); -- 2.11.0