diff options
author | Thomas Haller <thaller@redhat.com> | 2015-05-13 12:46:08 (GMT) |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2015-06-04 20:49:56 (GMT) |
commit | 75dcd01756716ba68f4733fc1cab3bf3a91f3b49 (patch) | |
tree | 8ac5d329d347ed5db5610d344404a9046b98b91a /lib/route/link.c | |
parent | 48182486341d1de7892494f272e892c0b18ebef5 (diff) | |
download | libnl-75dcd01756716ba68f4733fc1cab3bf3a91f3b49.zip libnl-75dcd01756716ba68f4733fc1cab3bf3a91f3b49.tar.gz libnl-75dcd01756716ba68f4733fc1cab3bf3a91f3b49.tar.bz2 |
route/link: fix memleaks in link_msg_parser()
http://lists.infradead.org/pipermail/libnl/2015-May/001880.html
Signed-off-by: Thomas Haller <thaller@redhat.com>
Diffstat (limited to 'lib/route/link.c')
-rw-r--r-- | lib/route/link.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/lib/route/link.c b/lib/route/link.c index 0b3238f..d66a798 100644 --- a/lib/route/link.c +++ b/lib/route/link.c @@ -495,8 +495,10 @@ static int link_msg_parser(struct nl_cache_ops *ops, struct sockaddr_nl *who, link->ce_msgtype = n->nlmsg_type; - if (!nlmsg_valid_hdr(n, sizeof(*ifi))) - return -NLE_MSG_TOOSHORT; + if (!nlmsg_valid_hdr(n, sizeof(*ifi))) { + err = -NLE_MSG_TOOSHORT; + goto errout; + } ifi = nlmsg_data(n); link->l_family = family = ifi->ifi_family; @@ -520,11 +522,11 @@ static int link_msg_parser(struct nl_cache_ops *ops, struct sockaddr_nl *who, err = nlmsg_parse(n, sizeof(*ifi), tb, IFLA_MAX, real_link_policy); if (err < 0) - return err; + goto errout; err = rtnl_link_info_parse(link, tb); if (err < 0) - return err; + goto errout; if (tb[IFLA_NUM_VF]) { link->l_num_vf = nla_get_u32(tb[IFLA_NUM_VF]); |