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

This is missing bit for fully fix BZ#15813 (the other two were fixed
by 359653aaac).

Checked on x86_64-linux-gnu.

	[BZ #15813]
	sysdeps/posix/tempname.c (__gen_tempname): get entrypy on each
	attempt.
This commit is contained in:
Adhemerval Zanella 2019-07-25 11:22:17 -03:00
parent 0b8c2f95df
commit e1df30fbc2
2 changed files with 12 additions and 7 deletions

View File

@ -1,3 +1,9 @@
2019-08-01 Adhemerval Zanella <adhemerval.zanella@linaro.org>
[BZ #15813]
sysdeps/posix/tempname.c (__gen_tempname): get entropy on each
attempt.
2019-08-01 Carlos O'Donell <carlos@redhat.com> 2019-08-01 Carlos O'Donell <carlos@redhat.com>
* version.h (RELEASE): Set to "stable". * version.h (RELEASE): Set to "stable".

View File

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