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

Message ID 20190725142550.18479-1-adhemerval.zanella@linaro.org
State New
Headers show
Series
  • Get new entropy on each attempt __gen_tempname (BZ #15813)
Related show

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 mbox series

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];