about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2022-03-22 16:01:34 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2024-04-17 16:12:10 -0300
commit817b755cceb2504121b37c4274bef36d6bc17adc (patch)
tree5ad3a65f952435d4a2268b6c8c168d18d996d098
parent413a452b5c6e68c90cc85dac19e1142eba88db28 (diff)
downloadglibc-817b755cceb2504121b37c4274bef36d6bc17adc.tar.gz
glibc-817b755cceb2504121b37c4274bef36d6bc17adc.tar.xz
glibc-817b755cceb2504121b37c4274bef36d6bc17adc.zip
resolv: Suppress clang -Wsometimes-uninitialized on getaddrinfo
clang warns that endp is used uninitialized whenever '||' condition
is true:

getaddrinfo.c:1888:11: error: variable 'endp' is used uninitialized
whenever '||' condition is true [-Werror,-Wsometimes-uninitialized]
 1888 |       && (cp == NULL
      |           ^~~~~~~~~~
getaddrinfo.c:1891:11: note: uninitialized use occurs here
 1891 |       && *endp == '\0'
      |           ^~~~
getaddrinfo.c:1888:11: note: remove the '||' if its condition is always
false
 1888 |       && (cp == NULL
      |           ^~~~~~~~~~
 1889 |           || (bits = strtoul (cp, &endp, 10)) != ULONG_MAX
      |           ~~
getaddrinfo.c:1875:13: note: initialize the variable 'endp' to silence
this warning
 1875 |   char *endp;
      |             ^
      |              = NULL
1 error generated.

However it will be evaluated after strtoul call.
-rw-r--r--nss/getaddrinfo.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/nss/getaddrinfo.c b/nss/getaddrinfo.c
index 3ccd3905fa..31a0283d50 100644
--- a/nss/getaddrinfo.c
+++ b/nss/getaddrinfo.c
@@ -1880,6 +1880,10 @@ add_prefixlist (struct prefixlist **listp, size_t *lenp, bool *nullbitsp,
   if (cp != NULL)
     *cp++ = '\0';
   *pos = cp;
+  /* clang warns that endp is used uninitialized whenever '||' condition
+     is true, however it will be evaluated after strtoul call.  */
+  DIAG_PUSH_NEEDS_COMMENT_CLANG;
+  DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wsometimes-uninitialized");
   if (inet_pton (AF_INET6, val1, &prefix)
       && (cp == NULL
 	  || (bits = strtoul (cp, &endp, 10)) != ULONG_MAX
@@ -1903,6 +1907,7 @@ add_prefixlist (struct prefixlist **listp, size_t *lenp, bool *nullbitsp,
       ++*lenp;
       *nullbitsp |= bits == 0;
     }
+  DIAG_POP_NEEDS_COMMENT_CLANG;
   return true;
 }
 
@@ -2041,6 +2046,11 @@ gaiconf_init (void)
 	      if (inet_pton (AF_INET6, val1, &prefix))
 		{
 		  bits = 128;
+		  /* clang warns that endp is used uninitialized whenever '||'
+		     condition is true, however it will be evaluated after
+		     strtoul call.  */
+		  DIAG_PUSH_NEEDS_COMMENT_CLANG;
+		  DIAG_IGNORE_NEEDS_COMMENT_CLANG (13, "-Wsometimes-uninitialized");
 		  if (IN6_IS_ADDR_V4MAPPED (&prefix)
 		      && (cp == NULL
 			  || (bits = strtoul (cp, &endp, 10)) != ULONG_MAX
@@ -2062,6 +2072,7 @@ gaiconf_init (void)
 			  goto no_file;
 			}
 		    }
+		  DIAG_POP_NEEDS_COMMENT_CLANG;
 		}
 	      else if (inet_pton (AF_INET, val1, &prefix.s6_addr32[3])
 		       && (cp == NULL