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-661-g5653ab1


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  5653ab12b4ae15b32d41de7c56b2a4626cd0437a (commit)
      from  af1a265da09829f9042619c885c64eb8567a59ce (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=5653ab12b4ae15b32d41de7c56b2a4626cd0437a

commit 5653ab12b4ae15b32d41de7c56b2a4626cd0437a
Author: Florian Weimer <fweimer@redhat.com>
Date:   Wed Jan 25 16:27:03 2017 +0100

    string/tst-strcoll-overflow: Do not accept timeout as test result
    
    The test completes within 300 seconds if enough memory is available.

diff --git a/ChangeLog b/ChangeLog
index fde9fd2..ce6f057 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,17 @@
+2017-01-25  Florian Weimer  <fweimer@redhat.com>
+
+	* string/Makefile (xtests): Add comment.
+	(LOCALES): Add en_GB.UTF-8.
+	(tst-strcoll-overflow.out): Depend on generated locales.
+	* string/tst-strcoll-overflow.c: Convert to support/test-driver.c.
+	(SIZE, TIMEOUT): Update comments.
+	(do_test): Define as static.  Fail test if setlocale fails.
+	Return EXIT_UNSUPPORTED if insufficient memory.  Enhance output
+	messages.
+	(EXPECTED_SIGNAL, EXPECTED_STATUS, TEST_FUNCTION): Remove.
+	TIMEOUT at 300 seconds should be enough to run this test
+	successfully.
+
 2017-01-24  Jakub Jelinek  <jakub@redhat.com>
 
 	* soft-fp/op-common.h (_FP_MUL, _FP_FMA, _FP_DIV): Add
diff --git a/string/Makefile b/string/Makefile
index 901c4d4..f317d02 100644
--- a/string/Makefile
+++ b/string/Makefile
@@ -59,6 +59,7 @@ tests		:= tester inl-tester noinl-tester testcopy test-ffs	\
 		   tst-strtok_r bug-strcoll2 tst-cmp tst-xbzero-opt	\
 		   test-endian-types
 
+# This test allocates a lot of memory and can run for a long time.
 xtests = tst-strcoll-overflow
 
 ifeq ($(run-built-tests),yes)
@@ -94,7 +95,7 @@ $(objpfx)tst-svc-cmp.out: tst-svc.expect $(objpfx)tst-svc.out
 
 LOCALES := de_DE.UTF-8 en_US.ISO-8859-1 en_US.UTF-8 \
            tr_TR.ISO-8859-9 tr_TR.UTF-8 cs_CZ.UTF-8 \
-	   da_DK.ISO-8859-1
+	   da_DK.ISO-8859-1 en_GB.UTF-8
 include ../gen-locales.mk
 
 $(objpfx)test-strcasecmp.out: $(gen-locales)
@@ -103,5 +104,6 @@ $(objpfx)tst-strxfrm.out: $(gen-locales)
 $(objpfx)tst-strxfrm2.out: $(gen-locales)
 # bug-strcoll2 needs cs_CZ.UTF-8 and da_DK.ISO-8859-1.
 $(objpfx)bug-strcoll2.out: $(gen-locales)
+$(objpfx)tst-strcoll-overflow.out: $(gen-locales)
 
 endif
diff --git a/string/tst-strcoll-overflow.c b/string/tst-strcoll-overflow.c
index ab76736..ee694b6 100644
--- a/string/tst-strcoll-overflow.c
+++ b/string/tst-strcoll-overflow.c
@@ -21,42 +21,34 @@
 #include <stdlib.h>
 #include <string.h>
 
-/* Verify that strcoll does not crash for large strings for which it cannot
-   cache weight lookup results.  The size is large enough to cause integer
-   overflows on 32-bit as well as buffer overflows on 64-bit.  The test should
-   work reasonably reliably when overcommit is disabled, but it obviously
-   depends on how much memory the system has.  There's a limitation to this
-   test in that it does not run to completion.  Actually collating such a
-   large string can take days and we can't have xcheck running that long.  For
-   that reason, we run the test for about 5 minutes and then assume that
-   everything is fine if there are no crashes.  */
+#include <support/check.h>
+#include <support/test-driver.h>
+
+/* Verify that strcoll does not crash for large strings for which it
+   cannot cache weight lookup results.  The size is large enough to
+   cause integer overflows on 32-bit as well as buffer overflows on
+   64-bit.  */
 #define SIZE 0x40000000ul
 
-int
+static int
 do_test (void)
 {
-  if (setlocale (LC_COLLATE, "en_GB.UTF-8") == NULL)
-    {
-      puts ("setlocale failed, cannot test for overflow");
-      return 0;
-    }
+  TEST_VERIFY_EXIT (setlocale (LC_COLLATE, "en_GB.UTF-8") != NULL);
 
   char *p = malloc (SIZE);
-
   if (p == NULL)
     {
-      puts ("could not allocate memory");
-      return 1;
+      puts ("info: could not allocate memory, cannot run test");
+      return EXIT_UNSUPPORTED;
     }
 
   memset (p, 'x', SIZE - 1);
   p[SIZE - 1] = 0;
-  printf ("%d\n", strcoll (p, p));
+  printf ("info: strcoll result: %d\n", strcoll (p, p));
   return 0;
 }
 
+/* This test can rung for a long time, but it should complete within
+   this time on reasonably current hardware.  */
 #define TIMEOUT 300
-#define EXPECTED_SIGNAL SIGALRM
-#define EXPECTED_STATUS 0
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
+#include <support/test-driver.c>

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

Summary of changes:
 ChangeLog                     |   14 ++++++++++++++
 string/Makefile               |    4 +++-
 string/tst-strcoll-overflow.c |   38 +++++++++++++++-----------------------
 3 files changed, 32 insertions(+), 24 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]