[patch] Fix BZ 23400 -- stdlib/test-bz22786.c creates temporary files in glibc source tree

Stefan Liebler stli@linux.ibm.com
Thu Aug 30 06:49:00 GMT 2018


Committed with the comment.
Thanks for reviewing.
Stefan

On 08/29/2018 04:05 PM, Carlos O'Donell wrote:
> On 08/29/2018 09:24 AM, Stefan Liebler wrote:
> 
> Thanks for posting a git-am'able patch :-) I like being able to review
> everything that will go into git.
> 
>> commit 5ada1975be8f1b30b8f33d1d25cb5575690066e1
>> Author: Stefan Liebler <stli@linux.ibm.com>
>> Date:   Wed Aug 29 15:20:51 2018 +0200
>>
>>      Test stdlib/test-bz22786 exits now with unsupported if malloc fails.
>>      
>>      The test tries to allocate more than 2^31 bytes which will always fail on s390
>>      as it has maximum 31bit of memory.
>>      Before commit 6c3a8a9d868a8deddf0d6dcc785b6d120de90523, this test returned
>>      unsupported if malloc fails.  This patch re enables this behaviour.
>>      
>>      Furthermore support_delete_temp_files() failed to remove the temp directory
>>      in this case as it is not empty due to the created symlink.
>>      Thus the creation of the symlink is moved behind malloc.
>>      
>>      ChangeLog
>>      
>>              * stdlib/test-bz22786.c (do_test): Return EXIT_UNSUPPORTED
>>              if malloc fails.
>>
> 
> OK for master with the additional comment below.
> 
> Reviewed-by: Carlos O'Donell <carlos@redhat.com>
> 
>> diff --git a/stdlib/test-bz22786.c b/stdlib/test-bz22786.c
>> index d1aa69106c..44ec631a96 100644
>> --- a/stdlib/test-bz22786.c
>> +++ b/stdlib/test-bz22786.c
>> @@ -39,16 +39,21 @@ do_test (void)
>>     const char *lnk = xasprintf ("%s/symlink", dir);
>>     const size_t path_len = (size_t) INT_MAX + strlen (lnk) + 1;
>>   
>> -  TEST_VERIFY_EXIT (symlink (".", lnk) == 0);
>> -
> 
> OK.
> 
>>     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 = xmalloc (path_len);
>> +  char *path = malloc (path_len);
> 
> Needs a comment explaining why we are not using xmalloc.
> 
> Suggestion:
> 
> /* On 31-bit s390 the malloc might fail, and we want to mark
>     the test unsupported.  Likewise on systems with little
>     physical memory the test will fail and should be unsupported.  */
> 
>>     DIAG_POP_NEEDS_COMMENT;
>> +  if (path == NULL)
>> +    {
>> +      printf ("malloc (%zu): %m\n", path_len);
>> +      return EXIT_UNSUPPORTED;
>> +    }
>> +
>> +  TEST_VERIFY_EXIT (symlink (".", lnk) == 0);
> 
> OK.
> 
>>   
>>     /* Construct very long path = "/tmp/bz22786.XXXX/symlink/aaaa....."  */
>>     char *p = mempcpy (path, lnk, strlen (lnk));
> 
> 



More information about the Libc-alpha mailing list