]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUILD: ist: prevent gcc11 maybe-uninitialized warning on istalloc
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Tue, 18 May 2021 09:33:57 +0000 (11:33 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Fri, 17 Sep 2021 07:57:27 +0000 (09:57 +0200)
A new warning is reported by gcc11 when using a pointer to uninitialized
memory block for a function with a const pointer argument. The warning
is triggered for istalloc, used by http_client.c / proxy.c / tcpcheck.c.

This warning is reported because the uninitialized memory block
allocated by malloc should not be passed to a const argument as in ist2.
See https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Warning-Options.html#index-Wmaybe-uninitialized

This should be backported up to 2.2.

include/import/ist.h

index 0dc3008f5c26ce569a59cb103751b165563fdf81..539a27d26131656311b5484b64fa6b9436f5f3c9 100644 (file)
@@ -862,7 +862,15 @@ static inline int istissame(const struct ist ist1, const struct ist ist2)
  */
 static inline struct ist istalloc(const size_t size)
 {
-       return ist2(malloc(size), 0);
+       /* Note: do not use ist2 here, as it triggers a gcc11 warning.
+        * ‘<unknown>’ may be used uninitialized [-Werror=maybe-uninitialized]
+        *
+        * This warning is reported because the uninitialized memory block
+        * allocated by malloc should not be passed to a const argument as in
+        * ist2.
+        * See https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Warning-Options.html#index-Wmaybe-uninitialized
+        */
+       return (struct ist){ .ptr = malloc(size), .len = 0 };
 }
 
 /* This function performs the equivalent of free() on the given <ist>.