summaryrefslogtreecommitdiff
path: root/src/random-seed/random-seed.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2019-07-19 19:34:10 +0200
committerLennart Poettering <lennart@poettering.net>2019-07-25 18:16:46 +0200
commit3e155eba4363ce3f7953e5b69db526ab47bf165d (patch)
tree6f17e77f061e2b82295206f5391a5a30b290edf6 /src/random-seed/random-seed.c
parentc18ecf0375021c5524bfe9d2f3d69180ffbb140d (diff)
downloadsystemd-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.c22
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)