summaryrefslogtreecommitdiffstats
path: root/lib/route/link.c
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2015-05-13 12:46:08 (GMT)
committerThomas Haller <thaller@redhat.com>2015-06-04 20:49:56 (GMT)
commit75dcd01756716ba68f4733fc1cab3bf3a91f3b49 (patch)
tree8ac5d329d347ed5db5610d344404a9046b98b91a /lib/route/link.c
parent48182486341d1de7892494f272e892c0b18ebef5 (diff)
downloadlibnl-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.c10
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]);