[Openvpn-devel] sitnl: fix failure reporting by keeping error negative

Message ID 20200418011849.382-1-a@unstable.cc
State Accepted
Headers show
Series [Openvpn-devel] sitnl: fix failure reporting by keeping error negative | expand

Commit Message

Antonio Quartulli April 17, 2020, 3:18 p.m. UTC
The err->errno value reported by netlink is already negative.

Prepending ierr->errno with '-' when forwarding it to
the caller results in a positive value and thus not
detected as error.

Fix error handling in sitnl by not negating the sign of
the value returned by sitnl_send() in case of generic error.

While at it, print the errno in decimal form along with
its string represenation.

Reported-by: Richard Bonhomme <tincanteksup@gmail.com>
Signed-off-by: Antonio Quartulli <a@unstable.cc>
 src/openvpn/networking_sitnl.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)


Gert Doering April 18, 2020, 11:54 p.m. UTC | #1
Acked-by: Gert Doering <gert@greenie.muc.de>

"Does what it says on the tin, and makes sense".

Your patch has been applied to the master branch.

commit 74fadcf4ebe860c15d12cb4e065c7ca0e0dc4497
Author: Antonio Quartulli
Date:   Sat Apr 18 03:18:49 2020 +0200

     sitnl: fix failure reporting by keeping error negative

     Signed-off-by: Antonio Quartulli <a@unstable.cc>
     Acked-by: Gert Doering <gert@greenie.muc.de>
     Message-Id: <20200418011849.382-1-a@unstable.cc>
     URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg19773.html
     Signed-off-by: Gert Doering <gert@greenie.muc.de>

kind regards,

Gert Doering


diff --git a/src/openvpn/networking_sitnl.c b/src/openvpn/networking_sitnl.c
index b93697e9..7adcb64c 100644
--- a/src/openvpn/networking_sitnl.c
+++ b/src/openvpn/networking_sitnl.c
@@ -365,9 +365,9 @@  sitnl_send(struct nlmsghdr *payload, pid_t peer, unsigned int groups,
-                        msg(M_WARN, "%s: rtnl: generic error: %s",
-                            __func__, strerror(-err->error));
-                        ret = -err->error;
+                        msg(M_WARN, "%s: rtnl: generic error (%d): %s",
+                            __func__, err->error, strerror(-err->error));
+                        ret = err->error;
                 goto out;