forked from pool/haproxy
0b429848d7
Update to 1.4.25. Amended SR with missing patch information in .changes OBS-URL: https://build.opensuse.org/request/show/232846 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/haproxy?expand=0&rev=4
52 lines
1.5 KiB
Diff
52 lines
1.5 KiB
Diff
From e8dcf678f2b3fafd18c09eb957e4d4a83e792d54 Mon Sep 17 00:00:00 2001
|
|
From: Willy Tarreau <w@1wt.eu>
|
|
Date: Mon, 14 Apr 2014 13:34:34 +0200
|
|
Subject: [PATCH 12/15] BUG/MEDIUM: systemd-wrapper: fix locating of haproxy
|
|
binary
|
|
|
|
BUG/MEDIUM: systemd-wrapper: fix locating of haproxy binary
|
|
|
|
OpenBSD complains this way due to strncat() :
|
|
|
|
src/haproxy-systemd-wrapper.o(.text+0xd5): In function `spawn_haproxy':
|
|
src/haproxy-systemd-wrapper.c:33: warning: strcat() is almost always misused, please use strlcat()
|
|
|
|
In fact, the code before strncat() here is wrong, because it may
|
|
dereference a NULL if /proc/self/exe is not readable. So fix it
|
|
and get rid of strncat() at the same time.
|
|
|
|
No backport is needed.
|
|
---
|
|
src/haproxy-systemd-wrapper.c | 11 ++++++++---
|
|
1 file changed, 8 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/src/haproxy-systemd-wrapper.c b/src/haproxy-systemd-wrapper.c
|
|
index c63f41ff7df6..8485dcd11da8 100644
|
|
--- a/src/haproxy-systemd-wrapper.c
|
|
+++ b/src/haproxy-systemd-wrapper.c
|
|
@@ -24,13 +24,18 @@ static char **main_argv;
|
|
|
|
static void locate_haproxy(char *buffer, size_t buffer_size)
|
|
{
|
|
- char* end = NULL;
|
|
+ char *end = NULL;
|
|
+
|
|
if (readlink("/proc/self/exe", buffer, buffer_size) > 0)
|
|
end = strrchr(buffer, '/');
|
|
- if (end == NULL)
|
|
+
|
|
+ if (end == NULL) {
|
|
strncpy(buffer, "/usr/sbin/haproxy", buffer_size);
|
|
+ return;
|
|
+ }
|
|
end[1] = '\0';
|
|
- strncat(buffer, "haproxy", buffer_size);
|
|
+ strncpy(end + 1, "haproxy", buffer + buffer_size - (end + 1));
|
|
+ buffer[buffer_size - 1] = '\0';
|
|
}
|
|
|
|
static void spawn_haproxy(char **pid_strv, int nb_pid)
|
|
--
|
|
1.8.4.5
|
|
|