arrfab / rpms / glibc

Forked from rpms/glibc 5 years ago
Clone

Blame SOURCES/glibc-rh1647490-2.patch

147e83
commit 3bad2358d67d371497079bba4f8eca9c0096f4e2
147e83
Author: Stefan Liebler <stli@linux.ibm.com>
147e83
Date:   Thu Aug 30 08:44:32 2018 +0200
147e83
147e83
    Test stdlib/test-bz22786 exits now with unsupported if malloc fails.
147e83
    
147e83
    The test tries to allocate more than 2^31 bytes which will always fail on s390
147e83
    as it has maximum 2^31bit of memory.
147e83
    Before commit 6c3a8a9d868a8deddf0d6dcc785b6d120de90523, this test returned
147e83
    unsupported if malloc fails.  This patch re enables this behaviour.
147e83
    
147e83
    Furthermore support_delete_temp_files() failed to remove the temp directory
147e83
    in this case as it is not empty due to the created symlink.
147e83
    Thus the creation of the symlink is moved behind malloc.
147e83
    
147e83
    Reviewed-by: Carlos O'Donell <carlos@redhat.com>
147e83
    
147e83
    ChangeLog:
147e83
    
147e83
            * stdlib/test-bz22786.c (do_test): Return EXIT_UNSUPPORTED
147e83
            if malloc fails.
147e83
147e83
diff --git a/stdlib/test-bz22786.c b/stdlib/test-bz22786.c
147e83
index d1aa69106ccf6ac5..777bf9180f4b5022 100644
147e83
--- a/stdlib/test-bz22786.c
147e83
+++ b/stdlib/test-bz22786.c
147e83
@@ -39,16 +39,25 @@ do_test (void)
147e83
   const char *lnk = xasprintf ("%s/symlink", dir);
147e83
   const size_t path_len = (size_t) INT_MAX + strlen (lnk) + 1;
147e83
 
147e83
-  TEST_VERIFY_EXIT (symlink (".", lnk) == 0);
147e83
-
147e83
   DIAG_PUSH_NEEDS_COMMENT;
147e83
 #if __GNUC_PREREQ (7, 0)
147e83
   /* GCC 7 warns about too-large allocations; here we need such
147e83
      allocation to succeed for the test to work.  */
147e83
   DIAG_IGNORE_NEEDS_COMMENT (7, "-Walloc-size-larger-than=");
147e83
 #endif
147e83
-  char *path = xmalloc (path_len);
147e83
+  char *path = malloc (path_len);
147e83
   DIAG_POP_NEEDS_COMMENT;
147e83
+  if (path == NULL)
147e83
+    {
147e83
+      printf ("malloc (%zu): %m\n", path_len);
147e83
+      /* On 31-bit s390 the malloc will always fail as we do not have
147e83
+	 so much memory, and we want to mark the test unsupported.
147e83
+	 Likewise on systems with little physical memory the test will
147e83
+	 fail and should be unsupported.  */
147e83
+      return EXIT_UNSUPPORTED;
147e83
+    }
147e83
+
147e83
+  TEST_VERIFY_EXIT (symlink (".", lnk) == 0);
147e83
 
147e83
   /* Construct very long path = "/tmp/bz22786.XXXX/symlink/aaaa....."  */
147e83
   char *p = mempcpy (path, lnk, strlen (lnk));