All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hangbin Liu <liuhangbin@gmail.com>
To: dsahern@kernel.org
Cc: stephen@networkplumber.org, netdev@vger.kernel.org,
	David Ahern <dsahern@gmail.com>, Phil Sutter <phil@nwl.cc>
Subject: Re: [PATCH iproute2] iplink_vrf: Save device index from response for return code
Date: Mon, 4 Jun 2018 09:11:13 +0800	[thread overview]
Message-ID: <20180604011113.GR8958@leo.usersys.redhat.com> (raw)
In-Reply-To: <20180601155016.3524-1-dsahern@kernel.org>

On Fri, Jun 01, 2018 at 08:50:16AM -0700, dsahern@kernel.org wrote:
> 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
> 

Thanks for the fix.

Acked-by: Hangbin Liu <liuhangbin@gmail.com>

      parent reply	other threads:[~2018-06-04  1:11 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-06-01 15:50 [PATCH iproute2] iplink_vrf: Save device index from response for return code dsahern
2018-06-01 17:05 ` Phil Sutter
2018-06-04  1:11 ` Hangbin Liu [this message]

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=20180604011113.GR8958@leo.usersys.redhat.com \
    --to=liuhangbin@gmail.com \
    --cc=dsahern@gmail.com \
    --cc=dsahern@kernel.org \
    --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.