naccyde / rpms / iproute

Forked from rpms/iproute 5 months ago
Clone

Blame SOURCES/0027-libnetlink-don-t-return-error-on-success.patch

7e752c
From 0a9e18d65228376c332d7ec0f87a19b8042e8a43 Mon Sep 17 00:00:00 2001
7e752c
From: Phil Sutter <psutter@redhat.com>
7e752c
Date: Thu, 25 Oct 2018 12:24:30 +0200
7e752c
Subject: [PATCH] libnetlink: don't return error on success
7e752c
7e752c
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1602555
7e752c
Upstream Status: iproute2.git commit b45e300024bb0
7e752c
7e752c
commit b45e300024bb0936a41821ad75117dc08b65669f
7e752c
Author: Stephen Hemminger <stephen@networkplumber.org>
7e752c
Date:   Tue Sep 25 10:08:48 2018 +0200
7e752c
7e752c
    libnetlink: don't return error on success
7e752c
7e752c
    Change to error handling broke normal code.
7e752c
7e752c
    Fixes: c60389e4f9ea ("libnetlink: fix leak and using unused memory on error")
7e752c
    Reported-by: David Ahern <dsahern@gmail.com>
7e752c
    Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
7e752c
---
7e752c
 lib/libnetlink.c | 13 ++++++++-----
7e752c
 1 file changed, 8 insertions(+), 5 deletions(-)
7e752c
7e752c
diff --git a/lib/libnetlink.c b/lib/libnetlink.c
7e752c
index 5868092..f18dcea 100644
7e752c
--- a/lib/libnetlink.c
7e752c
+++ b/lib/libnetlink.c
7e752c
@@ -666,17 +666,20 @@ static int __rtnl_talk_iov(struct rtnl_handle *rtnl, struct iovec *iov,
7e752c
 				if (!err->error)
7e752c
 					/* check messages from kernel */
7e752c
 					nl_dump_ext_ack(h, errfn);
7e752c
+				else {
7e752c
+					errno = -err->error;
7e752c
 
7e752c
-				if (rtnl->proto != NETLINK_SOCK_DIAG &&
7e752c
-				    show_rtnl_err)
7e752c
-					rtnl_talk_error(h, err, errfn);
7e752c
+					if (rtnl->proto != NETLINK_SOCK_DIAG &&
7e752c
+					    show_rtnl_err)
7e752c
+						rtnl_talk_error(h, err, errfn);
7e752c
+				}
7e752c
 
7e752c
-				errno = -err->error;
7e752c
 				if (answer)
7e752c
 					*answer = (struct nlmsghdr *)buf;
7e752c
 				else
7e752c
 					free(buf);
7e752c
-				return -i;
7e752c
+
7e752c
+				return err->error ? -i : 0;
7e752c
 			}
7e752c
 
7e752c
 			if (answer) {
7e752c
-- 
7e752c
1.8.3.1
7e752c