From: dsahern@kernel.org
To: stephen@networkplumber.org, netdev@vger.kernel.org
Cc: David Ahern <dsahern@gmail.com>,
Hangbin Liu <liuhangbin@gmail.com>, Phil Sutter <phil@nwl.cc>
Subject: [PATCH iproute2] iplink_vrf: Save device index from response for return code
Date: Fri, 1 Jun 2018 08:50:16 -0700 [thread overview]
Message-ID: <20180601155016.3524-1-dsahern@kernel.org> (raw)
From: David Ahern <dsahern@gmail.com>
A recent commit changed rtnl_talk_* to return the response message in
allocated memory so callers need to free it. The change to name_is_vrf
did not save the device index which is pointing to a struct inside the
now allocated and freed memory resulting in garbage getting returned
in some cases.
Fix by using a stack variable to save the return value and only set
it to ifi->ifi_index after all checks are done and before the answer
buffer is freed.
Fixes: 86bf43c7c2fdc ("lib/libnetlink: update rtnl_talk to support malloc buff at run time")
Cc: Hangbin Liu <liuhangbin@gmail.com>
Cc: Phil Sutter <phil@nwl.cc>
Signed-off-by: David Ahern <dsahern@gmail.com>
---
ip/iplink_vrf.c | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/ip/iplink_vrf.c b/ip/iplink_vrf.c
index e9dd0df98412..6004bb4f305e 100644
--- a/ip/iplink_vrf.c
+++ b/ip/iplink_vrf.c
@@ -191,6 +191,7 @@ int name_is_vrf(const char *name)
struct rtattr *tb[IFLA_MAX+1];
struct rtattr *li[IFLA_INFO_MAX+1];
struct ifinfomsg *ifi;
+ int ifindex = 0;
int len;
addattr_l(&req.n, sizeof(req), IFLA_IFNAME, name, strlen(name) + 1);
@@ -218,7 +219,8 @@ int name_is_vrf(const char *name)
if (strcmp(RTA_DATA(li[IFLA_INFO_KIND]), "vrf"))
goto out;
+ ifindex = ifi->ifi_index;
out:
free(answer);
- return ifi->ifi_index;
+ return ifindex;
}
--
2.11.0
next reply other threads:[~2018-06-01 15:50 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-01 15:50 dsahern [this message]
2018-06-01 17:05 ` [PATCH iproute2] iplink_vrf: Save device index from response for return code Phil Sutter
2018-06-04 1:11 ` Hangbin Liu
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=20180601155016.3524-1-dsahern@kernel.org \
--to=dsahern@kernel.org \
--cc=dsahern@gmail.com \
--cc=liuhangbin@gmail.com \
--cc=netdev@vger.kernel.org \
--cc=phil@nwl.cc \
--cc=stephen@networkplumber.org \
/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.