aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2022-04-20 15:36:22 +0200
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2022-04-20 15:43:00 +0200
commitce9a345632786d5585044ed71ed4c98c305b918f (patch)
treef2a8c282c7e55b5947f8b5209b77b6a62a3da851
parent398bb3861aa39ae6d3ada7bb54698653b4de370b (diff)
downloadbusybox-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.c10
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 }