This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.24-614-g3ecd616


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  3ecd616cc1782210d09c9678ec1a48899f19145b (commit)
      from  3d7229c2507be1daf0c3e15e1f134076fa8b9025 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=3ecd616cc1782210d09c9678ec1a48899f19145b

commit 3ecd616cc1782210d09c9678ec1a48899f19145b
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Wed Jan 4 23:33:31 2017 +0000

    Fix string/tester.c for GCC 7 -Wstringop-overflow=.
    
    GCC 7 has a -Wstringop-overflow= warning that includes warning for
    strncat with a size specified that is larger than the size of the
    buffer (which is dubious usage, but valid at runtime if in fact there
    isn't an overflow with the particular buffer contents present).
    string/tester.c tests such cases; this patch arranges for this warning
    to be ignored around relevant strncat calls.
    
    Tested compilation for aarch64 (GCC mainline) with
    build-many-glibcs.py; did execution testing for x86_64 (GCC 5).
    
    	* string/tester.c (test_strncat): Disable -Wstringop-overflow=
    	around tests of strncat with large sizes.

diff --git a/ChangeLog b/ChangeLog
index a3eacbb..df77ffa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2017-01-04  Joseph Myers  <joseph@codesourcery.com>
 
+	* string/tester.c (test_strncat): Disable -Wstringop-overflow=
+	around tests of strncat with large sizes.
+
 	* malloc/tst-malloc.c: Include <libc-internal.h>.
 	(do_test): Disable -Walloc-size-larger-than= around tests of
 	malloc with negative sizes.
diff --git a/string/tester.c b/string/tester.c
index 8b68537..ec35024 100644
--- a/string/tester.c
+++ b/string/tester.c
@@ -353,28 +353,70 @@ test_strncat (void)
      mechanism.  */
   it = "strncat";
   (void) strcpy (one, "ijk");
+  DIAG_PUSH_NEEDS_COMMENT;
+#if __GNUC_PREREQ (7, 0)
+  /* GCC 7 warns about the size passed to strncat being larger than
+     the size of the buffer; this is deliberately tested here..  */
+  DIAG_IGNORE_NEEDS_COMMENT (7, "-Wstringop-overflow=");
+#endif
   check (strncat (one, "lmn", 99) == one, 1);	/* Returned value. */
+  DIAG_POP_NEEDS_COMMENT;
   equal (one, "ijklmn", 2);		/* Basic test. */
 
   (void) strcpy (one, "x");
+  DIAG_PUSH_NEEDS_COMMENT;
+#if __GNUC_PREREQ (7, 0)
+  /* GCC 7 warns about the size passed to strncat being larger than
+     the size of the buffer; this is deliberately tested here..  */
+  DIAG_IGNORE_NEEDS_COMMENT (7, "-Wstringop-overflow=");
+#endif
   (void) strncat (one, "yz", 99);
+  DIAG_POP_NEEDS_COMMENT;
   equal (one, "xyz", 3);		/* Writeover. */
   equal (one+4, "mn", 4);		/* Wrote too much? */
 
   (void) strcpy (one, "gh");
   (void) strcpy (two, "ef");
+  DIAG_PUSH_NEEDS_COMMENT;
+#if __GNUC_PREREQ (7, 0)
+  /* GCC 7 warns about the size passed to strncat being larger than
+     the size of the buffer; this is deliberately tested here..  */
+  DIAG_IGNORE_NEEDS_COMMENT (7, "-Wstringop-overflow=");
+#endif
   (void) strncat (one, two, 99);
+  DIAG_POP_NEEDS_COMMENT;
   equal (one, "ghef", 5);			/* Basic test encore. */
   equal (two, "ef", 6);			/* Stomped on source? */
 
   (void) strcpy (one, "");
+  DIAG_PUSH_NEEDS_COMMENT;
+#if __GNUC_PREREQ (7, 0)
+  /* GCC 7 warns about the size passed to strncat being larger than
+     the size of the buffer; this is deliberately tested here..  */
+  DIAG_IGNORE_NEEDS_COMMENT (7, "-Wstringop-overflow=");
+#endif
   (void) strncat (one, "", 99);
+  DIAG_POP_NEEDS_COMMENT;
   equal (one, "", 7);			/* Boundary conditions. */
   (void) strcpy (one, "ab");
+  DIAG_PUSH_NEEDS_COMMENT;
+#if __GNUC_PREREQ (7, 0)
+  /* GCC 7 warns about the size passed to strncat being larger than
+     the size of the buffer; this is deliberately tested here..  */
+  DIAG_IGNORE_NEEDS_COMMENT (7, "-Wstringop-overflow=");
+#endif
   (void) strncat (one, "", 99);
+  DIAG_POP_NEEDS_COMMENT;
   equal (one, "ab", 8);
   (void) strcpy (one, "");
+  DIAG_PUSH_NEEDS_COMMENT;
+#if __GNUC_PREREQ (7, 0)
+  /* GCC 7 warns about the size passed to strncat being larger than
+     the size of the buffer; this is deliberately tested here..  */
+  DIAG_IGNORE_NEEDS_COMMENT (7, "-Wstringop-overflow=");
+#endif
   (void) strncat (one, "cd", 99);
+  DIAG_POP_NEEDS_COMMENT;
   equal (one, "cd", 9);
 
   (void) strcpy (one, "ab");
@@ -387,7 +429,14 @@ test_strncat (void)
   (void) strncat (one, "gh", 2);
   equal (one, "abcdgh", 12);		/* Count and length equal. */
 
+  DIAG_PUSH_NEEDS_COMMENT;
+#if __GNUC_PREREQ (7, 0)
+  /* GCC 7 warns about the size passed to strncat being larger than
+     the size of the buffer; this is deliberately tested here..  */
+  DIAG_IGNORE_NEEDS_COMMENT (7, "-Wstringop-overflow=");
+#endif
   (void) strncat (one, "ij", (size_t)-1);	/* set sign bit in count */
+  DIAG_POP_NEEDS_COMMENT;
   equal (one, "abcdghij", 13);
 
   int ntest = 14;
@@ -406,8 +455,16 @@ test_strncat (void)
 	    buf1[n2 + n3] = '\0';
 	    strcpy (buf2 + n1, "123");
 
+	    DIAG_PUSH_NEEDS_COMMENT;
+#if __GNUC_PREREQ (7, 0)
+	    /* GCC 7 warns about the size passed to strncat being
+	       larger than the size of the buffer; this is
+	       deliberately tested here..  */
+	    DIAG_IGNORE_NEEDS_COMMENT (7, "-Wstringop-overflow=");
+#endif
 	    check (strncat (buf1 + n2, buf2 + n1, ~((size_t) 0) - n4)
 		   == buf1 + n2, ntest);
+	    DIAG_POP_NEEDS_COMMENT;
 	    if (errors == olderrors)
 	      for (size_t i = 0; i < sizeof (buf1); ++i)
 		{

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog       |    3 ++
 string/tester.c |   57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 60 insertions(+), 0 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]