mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-29 08:11:08 +00:00
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:
parent
0b8c2f95df
commit
e1df30fbc2
@ -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".
|
||||||
|
@ -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];
|
||||||
|
Loading…
Reference in New Issue
Block a user