seedrng: code shrink
Struct initializers do this double init: ># util-linux/seedrng.c:88: struct pollfd random_fd = { movl $0, 132(%esp) #, random_fd movl $0, 136(%esp) #, random_fd ... ># util-linux/seedrng.c:88: struct pollfd random_fd = { movl %eax, 140(%esp) # _110, random_fd.fd movw $1, 144(%esp) #, random_fd.events and close(random_fd.fd) needs to pull the item from the stack: pushl 132(%esp) # random_fd.fd call close # function old new delta seedrng_main 1076 1050 -26 Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
52f3cf7e5f
commit
2cbfd01c15
@ -85,14 +85,14 @@ static bool read_new_seed(uint8_t *seed, size_t len)
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (ret < 0 && errno == ENOSYS) {
|
if (ret < 0 && errno == ENOSYS) {
|
||||||
struct pollfd random_fd = {
|
int fd = xopen("/dev/random", O_RDONLY);
|
||||||
.fd = xopen("/dev/random", O_RDONLY),
|
struct pollfd random_fd;
|
||||||
.events = POLLIN
|
random_fd.fd = fd;
|
||||||
};
|
random_fd.events = POLLIN;
|
||||||
is_creditable = poll(&random_fd, 1, 0) == 1;
|
is_creditable = poll(&random_fd, 1, 0) == 1;
|
||||||
//This is racy. is_creditable can be set to true here, but other process
|
//This is racy. is_creditable can be set to true here, but other process
|
||||||
//can consume "good" random data from /dev/urandom before we do it below.
|
//can consume "good" random data from /dev/urandom before we do it below.
|
||||||
close(random_fd.fd);
|
close(fd);
|
||||||
} else {
|
} else {
|
||||||
if (getrandom(seed, len, GRND_INSECURE) == (ssize_t)len)
|
if (getrandom(seed, len, GRND_INSECURE) == (ssize_t)len)
|
||||||
return false;
|
return false;
|
||||||
|
Loading…
Reference in New Issue
Block a user