From: Willy Tarreau Date: Wed, 11 Dec 2019 15:29:10 +0000 (+0100) Subject: BUILD/MINOR: unix sockets: silence an absurd gcc warning about strncpy() X-Git-Tag: v2.2-dev1~183 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=719e07c989be48a69fcfcaa404d12d7478de8a1b;p=thirdparty%2Fhaproxy.git BUILD/MINOR: unix sockets: silence an absurd gcc warning about strncpy() Apparently gcc developers decided that strncpy() semantics are no longer valid and now deserve a warning, especially if used exactly as designed. This results in issue #304. Let's just remove one to the target size to please her majesty gcc, the God of C Compilers, who tries hard to make users completely eliminate any use of string.h and reimplement it by themselves at much higher risks. Pfff.... This can be backported to stable version, the fix is harmless since it ignores the last zero that is already set on next line. --- diff --git a/src/haproxy.c b/src/haproxy.c index a7f6a247dd..30c43c11ba 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -1140,7 +1140,7 @@ static int get_old_sockets(const char *unixsocket) unixsocket); goto out; } - strncpy(addr.sun_path, unixsocket, sizeof(addr.sun_path)); + strncpy(addr.sun_path, unixsocket, sizeof(addr.sun_path) - 1); addr.sun_path[sizeof(addr.sun_path) - 1] = 0; addr.sun_family = PF_UNIX; ret = connect(sock, (struct sockaddr *)&addr, sizeof(addr)); diff --git a/src/proto_uxst.c b/src/proto_uxst.c index c5acfcec76..4c32f7eb07 100644 --- a/src/proto_uxst.c +++ b/src/proto_uxst.c @@ -250,7 +250,7 @@ static int uxst_bind_listener(struct listener *listener, char *errmsg, int errle goto err_return; } - strncpy(addr.sun_path, tempname, sizeof(addr.sun_path)); + strncpy(addr.sun_path, tempname, sizeof(addr.sun_path) - 1); addr.sun_path[sizeof(addr.sun_path) - 1] = 0; } else {