From: David Ahern <dsahern@kernel.org>
To: netdev@vger.kernel.org
Cc: idosch@idosch.org, David Ahern <dsahern@kernel.org>,
Nicolas Dichtel <nicolas.dichtel@6wind.com>
Subject: [PATCH net 3/5] ipv6: Check attribute length for RTA_GATEWAY in multipath route
Date: Thu, 30 Dec 2021 17:36:33 -0700 [thread overview]
Message-ID: <20211231003635.91219-4-dsahern@kernel.org> (raw)
In-Reply-To: <20211231003635.91219-1-dsahern@kernel.org>
Commit referenced in the Fixes tag used nla_memcpy for RTA_GATEWAY as
does the current nla_get_in6_addr. nla_memcpy protects against accessing
memory greater than what is in the attribute, but there is no check
requiring the attribute to have an IPv6 address. Add it.
Fixes: 51ebd3181572 ("ipv6: add support of equal cost multipath (ECMP)")
Signed-off-by: David Ahern <dsahern@kernel.org>
Cc: Nicolas Dichtel <nicolas.dichtel@6wind.com>
---
net/ipv6/route.c | 21 ++++++++++++++++++++-
1 file changed, 20 insertions(+), 1 deletion(-)
diff --git a/net/ipv6/route.c b/net/ipv6/route.c
index 42d60c76d30a..d16599c225b8 100644
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
@@ -5224,6 +5224,19 @@ static bool ip6_route_mpath_should_notify(const struct fib6_info *rt)
return should_notify;
}
+static int fib6_gw_from_attr(struct in6_addr *gw, struct nlattr *nla,
+ struct netlink_ext_ack *extack)
+{
+ if (nla_len(nla) < sizeof(*gw)) {
+ NL_SET_ERR_MSG(extack, "Invalid IPv6 address in RTA_GATEWAY");
+ return -EINVAL;
+ }
+
+ *gw = nla_get_in6_addr(nla);
+
+ return 0;
+}
+
static int ip6_route_multipath_add(struct fib6_config *cfg,
struct netlink_ext_ack *extack)
{
@@ -5264,7 +5277,13 @@ static int ip6_route_multipath_add(struct fib6_config *cfg,
nla = nla_find(attrs, attrlen, RTA_GATEWAY);
if (nla) {
- r_cfg.fc_gateway = nla_get_in6_addr(nla);
+ int ret;
+
+ ret = fib6_gw_from_attr(&r_cfg.fc_gateway, nla,
+ extack);
+ if (ret)
+ return ret;
+
r_cfg.fc_flags |= RTF_GATEWAY;
}
r_cfg.fc_encap = nla_find(attrs, attrlen, RTA_ENCAP);
--
2.24.3 (Apple Git-128)
next prev parent reply other threads:[~2021-12-31 0:36 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-12-31 0:36 [PATCH net 0/5] net: Length checks for attributes within multipath routes David Ahern
2021-12-31 0:36 ` [PATCH net 1/5] ipv4: Check attribute length for RTA_GATEWAY in multipath route David Ahern
2021-12-31 0:36 ` [PATCH net 2/5] ipv4: Check attribute length for RTA_FLOW " David Ahern
2021-12-31 0:36 ` David Ahern [this message]
2021-12-31 15:30 ` [PATCH net 3/5] ipv6: Check attribute length for RTA_GATEWAY " Nicolas Dichtel
2022-01-02 16:45 ` David Ahern
2021-12-31 0:36 ` [PATCH net 4/5] ipv6: Check attribute length for RTA_GATEWAY when deleting " David Ahern
2021-12-31 15:51 ` Nicolas Dichtel
2021-12-31 0:36 ` [PATCH net 5/5] lwtunnel: Validate RTA_ENCAP_TYPE attribute length David Ahern
2021-12-31 14:40 ` [PATCH net 0/5] net: Length checks for attributes within multipath routes patchwork-bot+netdevbpf
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20211231003635.91219-4-dsahern@kernel.org \
--to=dsahern@kernel.org \
--cc=idosch@idosch.org \
--cc=netdev@vger.kernel.org \
--cc=nicolas.dichtel@6wind.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.