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.
diff --git a/src/haproxy-systemd-wrapper.c b/src/haproxy-systemd-wrapper.c
index c63f41f..8485dcd 100644
--- a/src/haproxy-systemd-wrapper.c
+++ b/src/haproxy-systemd-wrapper.c
@@ -24,13 +24,18 @@
 
 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)