diff mbox series

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

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

Commit Message

Adhemerval Zanella Netto 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 Netto 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 Netto 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.
diff mbox series

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