Hi,
Trying to do a seemless reload while at least one socket has been bound to
a specifig interface will lead to a segfault, because the guy who wrote that
code did it by copying/pasting, and forgot to change an instance of
"namespace" to "iface".
The attached patch should fix it.
Regards,
Olivier
>From b249119e571a1b5c597819701e5ec6f7d4525cf8 Mon Sep 17 00:00:00 2001
From: Olivier Houchard
Date: Thu, 15 Mar 2018 17:48:49 +0100
Subject: [PATCH] MINOR: seemless reload: Fix crash when an interface is
specified.
When doing a seemless reload, while receiving the sockets from the old process
the new process will die if the socket has been bound to a specific
interface.
This happens because the code that tries to parse the informations bogusly
try to set xfer_sock->namespace, while it should be setting wfer_sock->iface.
This should be backported to 1.8.
---
src/haproxy.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/haproxy.c b/src/haproxy.c
index 4b740e135..e3e89c031 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -1180,7 +1180,7 @@ static int get_old_sockets(const char *unixsocket)
goto out;
}
memcpy(xfer_sock->iface, &tmpbuf[curoff], len);
- xfer_sock->namespace[len] = 0;
+ xfer_sock->iface[len] = 0;
curoff += len;
}
if (curoff + sizeof(int) > maxoff) {
--
2.14.3