summary refs log tree commit diff
path: root/net/core
diff options
context:
space:
mode:
authorDavid Ahern <dsahern@gmail.com>2018-10-08 13:57:24 -0700
committerDavid S. Miller <davem@davemloft.net>2018-10-10 22:24:33 -0700
commit4565d7e5a300fcc3a41d40dbcf7ff9d1fe316814 (patch)
treec05c60ccb86c698b857443d25364b553992ff894 /net/core
parent66077060f82a69e8dde0262a20a37622a6e1af8c (diff)
downloadlinux-4565d7e5a300fcc3a41d40dbcf7ff9d1fe316814.tar.gz
rtnetlink: Move ifm in valid_fdb_dump_legacy to closer to use
Move setting of local variable ifm to after the message parsing in
valid_fdb_dump_legacy. Avoid potential future use of unchecked variable.

Fixes: 8dfbda19a21b ("rtnetlink: Move input checking for rtnl_fdb_dump to helper")
Reported-by: Christian Brauner <christian@brauner.io>
Signed-off-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core')
-rw-r--r--net/core/rtnetlink.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/net/core/rtnetlink.c b/net/core/rtnetlink.c
index c894c4af8981..2715f8d21517 100644
--- a/net/core/rtnetlink.c
+++ b/net/core/rtnetlink.c
@@ -3857,7 +3857,6 @@ static int valid_fdb_dump_legacy(const struct nlmsghdr *nlh,
 				 int *br_idx, int *brport_idx,
 				 struct netlink_ext_ack *extack)
 {
-	struct ifinfomsg *ifm = nlmsg_data(nlh);
 	struct nlattr *tb[IFLA_MAX+1];
 	int err;
 
@@ -3871,6 +3870,8 @@ static int valid_fdb_dump_legacy(const struct nlmsghdr *nlh,
 	if (nlmsg_len(nlh) != sizeof(struct ndmsg) &&
 	    (nlmsg_len(nlh) != sizeof(struct ndmsg) +
 	     nla_attr_size(sizeof(u32)))) {
+		struct ifinfomsg *ifm;
+
 		err = nlmsg_parse(nlh, sizeof(struct ifinfomsg), tb, IFLA_MAX,
 				  ifla_policy, extack);
 		if (err < 0) {
@@ -3880,6 +3881,7 @@ static int valid_fdb_dump_legacy(const struct nlmsghdr *nlh,
 				*br_idx = nla_get_u32(tb[IFLA_MASTER]);
 		}
 
+		ifm = nlmsg_data(nlh);
 		*brport_idx = ifm->ifi_index;
 	}
 	return 0;