From 3ed26b3db58df3599a34186accb2d523a93654ad Mon Sep 17 00:00:00 2001 From: Packit Date: Aug 21 2020 09:20:53 +0000 Subject: Apply patch glibc-rh1638523-4.patch patch_name: glibc-rh1638523-4.patch location_in_specfile: 44 present_in_specfile: true --- diff --git a/stdlib/test-bz22786.c b/stdlib/test-bz22786.c index 777bf91..bb1e04f 100644 --- a/stdlib/test-bz22786.c +++ b/stdlib/test-bz22786.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -39,17 +40,12 @@ do_test (void) const char *lnk = xasprintf ("%s/symlink", dir); const size_t path_len = (size_t) INT_MAX + strlen (lnk) + 1; - DIAG_PUSH_NEEDS_COMMENT; -#if __GNUC_PREREQ (7, 0) - /* GCC 7 warns about too-large allocations; here we need such - allocation to succeed for the test to work. */ - DIAG_IGNORE_NEEDS_COMMENT (7, "-Walloc-size-larger-than="); -#endif - char *path = malloc (path_len); - DIAG_POP_NEEDS_COMMENT; + struct support_blob_repeat repeat + = support_blob_repeat_allocate ("a", 1, path_len); + char *path = repeat.start; if (path == NULL) { - printf ("malloc (%zu): %m\n", path_len); + printf ("Repeated allocation (%zu bytes): %m\n", path_len); /* On 31-bit s390 the malloc will always fail as we do not have so much memory, and we want to mark the test unsupported. Likewise on systems with little physical memory the test will @@ -62,7 +58,6 @@ do_test (void) /* Construct very long path = "/tmp/bz22786.XXXX/symlink/aaaa....." */ char *p = mempcpy (path, lnk, strlen (lnk)); *(p++) = '/'; - memset (p, 'a', path_len - (p - path) - 2); p[path_len - (p - path) - 1] = '\0'; /* This call crashes before the fix for bz22786 on 32-bit platforms. */ @@ -76,6 +71,7 @@ do_test (void) /* Cleanup. */ unlink (lnk); + support_blob_repeat_free (&repeat); return 0; }