[MINOR] force null-termination of hostname
Marcello Gorlani reported that at least on FreeBSD, a long hostname
was reported with garbage on the stats page. POSIX does not make it
mandatory for gethostname() to NULL-terminate the string in case of
truncation, and at least FreeBSD appears not to do it. So let's
force null-termination to keep safe.
diff --git a/src/haproxy.c b/src/haproxy.c
index e82ab56..17ee27d 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -147,7 +147,7 @@
const int one = 1;
const struct linger nolinger = { .l_onoff = 1, .l_linger = 0 };
-char hostname[MAX_HOSTNAME_LEN] = "";
+char hostname[MAX_HOSTNAME_LEN];
/*********************************************************************/
@@ -542,7 +542,12 @@
if (LIST_ISEMPTY(&cfg_cfgfiles))
usage(old_argv);
- gethostname(hostname, MAX_HOSTNAME_LEN);
+ /* NB: POSIX does not make it mandatory for gethostname() to NULL-terminate
+ * the string in case of truncation, and at least FreeBSD appears not to do
+ * it.
+ */
+ memset(hostname, 0, sizeof(hostname));
+ gethostname(hostname, sizeof(hostname) - 1);
have_appsession = 0;
global.maxsock = 10; /* reserve 10 fds ; will be incremented by socket eaters */