Get new entropy on each attempt __gen_tempname (BZ #15813)

Message ID 20190725142550.18479-1-adhemerval.zanella@linaro.org
State Dropped
Headers

Commit Message

Adhemerval Zanella July 25, 2019, 2:25 p.m. UTC
  This is missing bit for fully fix BZ#15813 (the other two were fixed
by 359653aaacad463).

Checked on x86_64-linux-gnu.

	[BZ #15813]
	sysdeps/posix/tempname.c (__gen_tempname): get entrypy on each
	attempt.
---
 sysdeps/posix/tempname.c | 13 ++++++-------
 1 file changed, 6 insertions(+), 7 deletions(-)
  

Comments

Florian Weimer July 29, 2019, 8:33 a.m. UTC | #1
* Adhemerval Zanella:

> +  uint64_t pid = (uint64_t)__getpid () << 32;

Space after cast?  Rest of the change looks okay.

Thanks,
Florian
  
Adhemerval Zanella July 29, 2019, 5:55 p.m. UTC | #2
On 29/07/2019 05:33, Florian Weimer wrote:
> * Adhemerval Zanella:
> 
>> +  uint64_t pid = (uint64_t)__getpid () << 32;
> 
> Space after cast?  Rest of the change looks okay.

Ack, changed locally.

> 
> Thanks,
> Florian
>
  
Carlos O'Donell July 29, 2019, 6:52 p.m. UTC | #3
On 7/29/19 1:55 PM, Adhemerval Zanella wrote:
> 
> 
> On 29/07/2019 05:33, Florian Weimer wrote:
>> * Adhemerval Zanella:
>>
>>> +  uint64_t pid = (uint64_t)__getpid () << 32;
>>
>> Space after cast?  Rest of the change looks okay.
> 
> Ack, changed locally.

Are you OK with this waiting for 2.31 to open?

I'd like to minimize the changes to those we're making for
gcc 10 compatibility.
  
Adhemerval Zanella July 29, 2019, 6:59 p.m. UTC | #4
On 29/07/2019 15:52, Carlos O'Donell wrote:
> On 7/29/19 1:55 PM, Adhemerval Zanella wrote:
>>
>>
>> On 29/07/2019 05:33, Florian Weimer wrote:
>>> * Adhemerval Zanella:
>>>
>>>> +  uint64_t pid = (uint64_t)__getpid () << 32;
>>>
>>> Space after cast?  Rest of the change looks okay.
>>
>> Ack, changed locally.
> 
> Are you OK with this waiting for 2.31 to open?
> 
> I'd like to minimize the changes to those we're making for
> gcc 10 compatibility.
> 

Certainly, I forgot to add on this fix that it is meant for 2.31.
  

Patch

diff --git a/sysdeps/posix/tempname.c b/sysdeps/posix/tempname.c
index de346949b2..e930211703 100644
--- a/sysdeps/posix/tempname.c
+++ b/sysdeps/posix/tempname.c
@@ -186,7 +186,6 @@  __gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
 {
   int len;
   char *XXXXXX;
-  uint64_t value;
   unsigned int count;
   int fd = -1;
   int save_errno = errno;
@@ -218,13 +217,13 @@  __gen_tempname (char *tmpl, int suffixlen, int flags, int kind)
   /* This is where the Xs start.  */
   XXXXXX = &tmpl[len - 6 - suffixlen];
 
-  /* Get some more or less random data.  */
-  RANDOM_BITS (value);
-  value ^= (uint64_t)__getpid () << 32;
-
-  for (count = 0; count < attempts; value += 7777, ++count)
+  uint64_t pid = (uint64_t)__getpid () << 32;
+  for (count = 0; count < attempts; ++count)
     {
-      uint64_t v = value;
+      uint64_t v;
+      /* Get some more or less random data.  */
+      RANDOM_BITS (v);
+      v ^= pid;
 
       /* Fill in the random bits.  */
       XXXXXX[0] = letters[v % 62];