diff options
author | Denys Vlasenko <vda.linux@googlemail.com> | 2022-04-30 15:36:54 +0200 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2022-04-30 15:38:44 +0200 |
commit | 2cbfd01c150420199a9cb74f5de72d7279e6cd11 (patch) | |
tree | adac1c5c3dbdf347ba662938d33d4be43e29a697 | |
parent | 52f3cf7e5f8c2635ffd456602b74118cf86ec099 (diff) | |
download | busybox-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.c | 10 |
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; |