From 48e435cd93fa55ff415b90fbcdf657ded01e45b6 Mon Sep 17 00:00:00 2001 From: Stefan Liebler Date: Thu, 11 Dec 2014 07:38:01 -0500 Subject: [PATCH] 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. --- ChangeLog | 6 ++++++ resolv/res_send.c | 27 ++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 9f18f4e95e..b815868543 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,10 @@ 2014-12-12 Stefan Liebler + Adhemerval Zanella + + * resolv/res_send.c (send_vc): Disable warning resplen may + be used uninitialized. + +2014-12-12 Stefan Liebler * nptl/tst-mutex6.c (ATTR_NULL): New define checks ATTR against NULL. 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 #include #include +#include #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 -- 2.11.4.GIT