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 <tincantek...@gmail.com>
Signed-off-by: Antonio Quartulli <a...@unstable.cc>
---
 src/openvpn/networking_sitnl.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

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,
                     }
                     else
                     {
-                        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;
-- 
2.26.1



_______________________________________________
Openvpn-devel mailing list
Openvpn-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openvpn-devel

Reply via email to