aboutsummaryrefslogtreecommitdiff
path: root/resolv/res_send.c
diff options
context:
space:
mode:
authorStefan Liebler <stli@linux.vnet.ibm.com>2014-12-11 07:38:01 -0500
committerAdhemerval Zanella <azanella@linux.vnet.ibm.com>2014-12-12 16:30:12 -0500
commit48e435cd93fa55ff415b90fbcdf657ded01e45b6 (patch)
tree39aa5757fb3b574bf386279884b712ec8312e76d /resolv/res_send.c
parent9d9c0019e750b6ef2f6d941e40a4b959c736653c (diff)
downloadglibc-48e435cd93fa55ff415b90fbcdf657ded01e45b6.tar
glibc-48e435cd93fa55ff415b90fbcdf657ded01e45b6.tar.gz
glibc-48e435cd93fa55ff415b90fbcdf657ded01e45b6.tar.bz2
glibc-48e435cd93fa55ff415b90fbcdf657ded01e45b6.zip
resolv: Suppress maybe uninitialized warning
In send_vc function at resolv/res_send.c, There is the following warning on some architectures: 'resplen' may be used uninitialized in this function [-Wmaybe-uninitialized] And this is a false positive. This patch suppress the compiler warning.
Diffstat (limited to 'resolv/res_send.c')
-rw-r--r--resolv/res_send.c27
1 files changed, 26 insertions, 1 deletions
diff --git a/resolv/res_send.c b/resolv/res_send.c
index af42b8aac2..4a95eb80cb 100644
--- a/resolv/res_send.c
+++ b/resolv/res_send.c
@@ -96,6 +96,7 @@ static const char rcsid[] = "$BINDId: res_send.c,v 8.38 2000/03/30 20:16:51 vixi
#include <string.h>
#include <unistd.h>
#include <kernel-features.h>
+#include <libc-internal.h>
#if PACKETSZ > 65536
#define MAXPACKET PACKETSZ
@@ -668,7 +669,24 @@ send_vc(res_state statp,
// int anssiz = *anssizp;
HEADER *anhp = (HEADER *) ans;
struct sockaddr_in6 *nsap = EXT(statp).nsaddrs[ns];
- int truncating, connreset, resplen, n;
+ int truncating, connreset, n;
+ /* On some architectures compiler might emit a warning indicating
+ 'resplen' may be used uninitialized. However if buf2 == NULL
+ then this code won't be executed; if buf2 != NULL, then first
+ time round the loop recvresp1 and recvresp2 will be 0 so this
+ code won't be executed but "thisresplenp = &resplen;" followed
+ by "*thisresplenp = rlen;" will be executed so that subsequent
+ times round the loop resplen has been initialized. So this is
+ a false-positive.
+ */
+#if __GNUC_PREREQ (4, 7)
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
+#endif
+ int resplen;
+#if __GNUC_PREREQ (4, 7)
+ DIAG_POP_NEEDS_COMMENT;
+#endif
struct iovec iov[4];
u_short len;
u_short len2;
@@ -787,6 +805,10 @@ send_vc(res_state statp,
/* No buffer allocated for the first
reply. We can try to use the rest
of the user-provided buffer. */
+#if __GNUC_PREREQ (4, 7)
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
+#endif
#if _STRING_ARCH_unaligned
*anssizp2 = orig_anssizp - resplen;
*ansp2 = *ansp + resplen;
@@ -797,6 +819,9 @@ send_vc(res_state statp,
*anssizp2 = orig_anssizp - aligned_resplen;
*ansp2 = *ansp + aligned_resplen;
#endif
+#if __GNUC_PREREQ (4, 7)
+ DIAG_POP_NEEDS_COMMENT;
+#endif
} else {
/* The first reply did not fit into the
user-provided buffer. Maybe the second