diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2022-04-20 15:36:22 +0200 |
---|---|---|
committer | Bernhard Reutner-Fischer <rep.dot.nop@gmail.com> | 2022-04-20 15:43:00 +0200 |
commit | ce9a345632786d5585044ed71ed4c98c305b918f (patch) | |
tree | f2a8c282c7e55b5947f8b5209b77b6a62a3da851 | |
parent | 398bb3861aa39ae6d3ada7bb54698653b4de370b (diff) | |
download | busybox-w32-ce9a345632786d5585044ed71ed4c98c305b918f.tar.gz busybox-w32-ce9a345632786d5585044ed71ed4c98c305b918f.tar.bz2 busybox-w32-ce9a345632786d5585044ed71ed4c98c305b918f.zip |
seedrng: use predefined strings where possible
- Use predefined strings where possible.
- Open /dev/random with O_RDONLY for ioctl().
function old new delta
seed_from_file_if_exists 413 410 -3
.rodata 108407 108350 -57
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-60) Total: -60 bytes
text data bss dec hex filename
975979 4227 1816 982022 efc06 busybox_old
975919 4227 1816 981962 efbca busybox_unstripped
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.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 bc6ae5cb4..49b9ab54b 100644 --- a/util-linux/seedrng.c +++ b/util-linux/seedrng.c | |||
@@ -79,7 +79,7 @@ static size_t determine_optimal_seed_len(void) | |||
79 | unsigned long poolsize; | 79 | unsigned long poolsize; |
80 | 80 | ||
81 | if (open_read_close("/proc/sys/kernel/random/poolsize", poolsize_str, sizeof(poolsize_str) - 1) < 0) { | 81 | if (open_read_close("/proc/sys/kernel/random/poolsize", poolsize_str, sizeof(poolsize_str) - 1) < 0) { |
82 | bb_perror_msg("unable to determine pool size, falling back to %u bits", MIN_SEED_LEN * 8); | 82 | bb_perror_msg("unable to determine pool size, assuming %u bits", MIN_SEED_LEN * 8); |
83 | return MIN_SEED_LEN; | 83 | return MIN_SEED_LEN; |
84 | } | 84 | } |
85 | poolsize = (bb_strtoul(poolsize_str, NULL, 10) + 7) / 8; | 85 | poolsize = (bb_strtoul(poolsize_str, NULL, 10) + 7) / 8; |
@@ -129,7 +129,7 @@ static int seed_rng(uint8_t *seed, size_t len, bool credit) | |||
129 | } | 129 | } |
130 | memcpy(req.buffer, seed, len); | 130 | memcpy(req.buffer, seed, len); |
131 | 131 | ||
132 | random_fd = open("/dev/random", O_RDWR); | 132 | random_fd = open("/dev/random", O_RDONLY); |
133 | if (random_fd < 0) | 133 | if (random_fd < 0) |
134 | return -1; | 134 | return -1; |
135 | ret = ioctl(random_fd, RNDADDENTROPY, &req); | 135 | ret = ioctl(random_fd, RNDADDENTROPY, &req); |
@@ -154,7 +154,7 @@ static int seed_from_file_if_exists(const char *filename, int dfd, bool credit, | |||
154 | return -1; | 154 | return -1; |
155 | } | 155 | } |
156 | if ((unlink(filename) < 0 || fsync(dfd) < 0) && seed_len) { | 156 | if ((unlink(filename) < 0 || fsync(dfd) < 0) && seed_len) { |
157 | bb_simple_perror_msg("unable to remove seed after reading, so not seeding"); | 157 | bb_simple_perror_msg("unable to remove seed, so not seeding"); |
158 | return -1; | 158 | return -1; |
159 | } else if (!seed_len) | 159 | } else if (!seed_len) |
160 | return 0; | 160 | return 0; |
@@ -205,14 +205,14 @@ int seedrng_main(int argc UNUSED_PARAM, char *argv[]) | |||
205 | 205 | ||
206 | umask(0077); | 206 | umask(0077); |
207 | if (getuid()) | 207 | if (getuid()) |
208 | bb_simple_error_msg_and_die("this program requires root"); | 208 | bb_simple_error_msg_and_die(bb_msg_you_must_be_root); |
209 | 209 | ||
210 | if (mkdir(seed_dir, 0700) < 0 && errno != EEXIST) | 210 | if (mkdir(seed_dir, 0700) < 0 && errno != EEXIST) |
211 | bb_simple_perror_msg_and_die("unable to create seed directory"); | 211 | bb_simple_perror_msg_and_die("unable to create seed directory"); |
212 | 212 | ||
213 | dfd = open(seed_dir, O_DIRECTORY | O_RDONLY); | 213 | dfd = open(seed_dir, O_DIRECTORY | O_RDONLY); |
214 | if (dfd < 0 || flock(dfd, LOCK_EX) < 0) { | 214 | if (dfd < 0 || flock(dfd, LOCK_EX) < 0) { |
215 | bb_simple_perror_msg("unable to open and lock seed directory"); | 215 | bb_simple_perror_msg("unable to lock seed directory"); |
216 | program_ret = 1; | 216 | program_ret = 1; |
217 | goto out; | 217 | goto out; |
218 | } | 218 | } |