diff options
author | Lennart Poettering <lennart@poettering.net> | 2019-07-19 19:34:10 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2019-07-25 18:16:46 +0200 |
commit | 3e155eba4363ce3f7953e5b69db526ab47bf165d (patch) | |
tree | 6f17e77f061e2b82295206f5391a5a30b290edf6 /src/random-seed/random-seed.c | |
parent | c18ecf0375021c5524bfe9d2f3d69180ffbb140d (diff) | |
download | systemd-3e155eba4363ce3f7953e5b69db526ab47bf165d.tar.gz |
random-seed: move pool size determination to random-util.[ch]
That way we can reuse it elsewhere.
Diffstat (limited to 'src/random-seed/random-seed.c')
-rw-r--r-- | src/random-seed/random-seed.c | 22 |
1 files changed, 4 insertions, 18 deletions
diff --git a/src/random-seed/random-seed.c b/src/random-seed/random-seed.c index 510a2715f2..12f14f2888 100644 --- a/src/random-seed/random-seed.c +++ b/src/random-seed/random-seed.c @@ -15,20 +15,17 @@ #include "log.h" #include "main-func.h" #include "mkdir.h" +#include "random-util.h" #include "string-util.h" #include "util.h" -#define POOL_SIZE_MIN 512 -#define POOL_SIZE_MAX (10*1024*1024) - static int run(int argc, char *argv[]) { _cleanup_close_ int seed_fd = -1, random_fd = -1; bool read_seed_file, write_seed_file; _cleanup_free_ void* buf = NULL; - size_t buf_size = 0; + size_t buf_size; struct stat st; ssize_t k; - FILE *f; int r; log_setup_service(); @@ -39,18 +36,7 @@ static int run(int argc, char *argv[]) { umask(0022); - /* Read pool size, if possible */ - f = fopen("/proc/sys/kernel/random/poolsize", "re"); - if (f) { - if (fscanf(f, "%zu", &buf_size) > 0) - /* poolsize is in bits on 2.6, but we want bytes */ - buf_size /= 8; - - fclose(f); - } - - if (buf_size < POOL_SIZE_MIN) - buf_size = POOL_SIZE_MIN; + buf_size = random_pool_size(); r = mkdir_parents(RANDOM_SEED, 0755); if (r < 0) @@ -113,7 +99,7 @@ static int run(int argc, char *argv[]) { /* If the seed file is larger than what we expect, then honour the existing size and save/restore as much as it says */ if ((uint64_t) st.st_size > buf_size) - buf_size = MIN(st.st_size, POOL_SIZE_MAX); + buf_size = MIN(st.st_size, RANDOM_POOL_SIZE_MAX); buf = malloc(buf_size); if (!buf) |