aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiddhesh Poyarekar <siddhesh@redhat.com>2014-12-16 19:40:47 +0530
committerSiddhesh Poyarekar <siddhesh@redhat.com>2014-12-16 19:40:47 +0530
commit0cd8552045aeb0537b4f1ab5d1b30ada8ae50076 (patch)
treec466784133086fcb0337f10e95a56cba41d86eec
parenta0d424ef9d7fc34f7d1a516f38c8efb1e8692a03 (diff)
downloadglibc-0cd8552045aeb0537b4f1ab5d1b30ada8ae50076.tar
glibc-0cd8552045aeb0537b4f1ab5d1b30ada8ae50076.tar.gz
glibc-0cd8552045aeb0537b4f1ab5d1b30ada8ae50076.tar.bz2
glibc-0cd8552045aeb0537b4f1ab5d1b30ada8ae50076.zip
Fix the 'array subscript is above array bounds' warning correctly
Use DIAG_IGNORE_NEEDS_COMMENT instead since the compiler should have seen that NS never goes beyond MAXNS.
-rw-r--r--ChangeLog3
-rw-r--r--resolv/res_send.c8
2 files changed, 10 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 2a3e0b7bf2..fae86bbc47 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2014-12-16 Siddhesh Poyarekar <siddhesh@redhat.com>
+ * resolv/res_send.c (__libc_res_nsend): Disable warning 'array
+ subscript above bounds'
+
* resolv/res_send.c (__libc_res_nsend): Fix check for nsmap
bounds.
diff --git a/resolv/res_send.c b/resolv/res_send.c
index 5a9882c6ad..c35fb66bda 100644
--- a/resolv/res_send.c
+++ b/resolv/res_send.c
@@ -429,9 +429,15 @@ __libc_res_nsend(res_state statp, const u_char *buf, int buflen,
while (ns < MAXNS
&& EXT(statp).nsmap[ns] != MAXNS)
ns++;
- if (ns >= MAXNS)
+ if (ns == MAXNS)
break;
+ /* NS never exceeds MAXNS, but gcc 4.9 somehow
+ does not see this. */
+ DIAG_PUSH_NEEDS_COMMENT;
+ DIAG_IGNORE_NEEDS_COMMENT (4.9,
+ "-Warray-bounds");
EXT(statp).nsmap[ns] = n;
+ DIAG_POP_NEEDS_COMMENT;
map[n] = ns++;
}
EXT(statp).nscount = n;