aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2022-04-30 15:36:54 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2022-04-30 15:38:44 +0200
commit2cbfd01c150420199a9cb74f5de72d7279e6cd11 (patch)
treeadac1c5c3dbdf347ba662938d33d4be43e29a697
parent52f3cf7e5f8c2635ffd456602b74118cf86ec099 (diff)
downloadbusybox-w32-2cbfd01c150420199a9cb74f5de72d7279e6cd11.tar.gz
busybox-w32-2cbfd01c150420199a9cb74f5de72d7279e6cd11.tar.bz2
busybox-w32-2cbfd01c150420199a9cb74f5de72d7279e6cd11.zip
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>
-rw-r--r--util-linux/seedrng.c10
1 files changed, 5 insertions, 5 deletions
diff --git a/util-linux/seedrng.c b/util-linux/seedrng.c
index 5559ba77c..023ed8688 100644
--- a/util-linux/seedrng.c
+++ b/util-linux/seedrng.c
@@ -85,14 +85,14 @@ static bool read_new_seed(uint8_t *seed, size_t len)
85 return true; 85 return true;
86 } 86 }
87 if (ret < 0 && errno == ENOSYS) { 87 if (ret < 0 && errno == ENOSYS) {
88 struct pollfd random_fd = { 88 int fd = xopen("/dev/random", O_RDONLY);
89 .fd = xopen("/dev/random", O_RDONLY), 89 struct pollfd random_fd;
90 .events = POLLIN 90 random_fd.fd = fd;
91 }; 91 random_fd.events = POLLIN;
92 is_creditable = poll(&random_fd, 1, 0) == 1; 92 is_creditable = poll(&random_fd, 1, 0) == 1;
93//This is racy. is_creditable can be set to true here, but other process 93//This is racy. is_creditable can be set to true here, but other process
94//can consume "good" random data from /dev/urandom before we do it below. 94//can consume "good" random data from /dev/urandom before we do it below.
95 close(random_fd.fd); 95 close(fd);
96 } else { 96 } else {
97 if (getrandom(seed, len, GRND_INSECURE) == (ssize_t)len) 97 if (getrandom(seed, len, GRND_INSECURE) == (ssize_t)len)
98 return false; 98 return false;