summaryrefslogtreecommitdiff
path: root/src/random-seed
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2020-06-11 09:53:29 +0200
committerLennart Poettering <lennart@poettering.net>2020-06-24 15:33:27 +0200
commit4dd055f907eda30b95c9cdd0b822120bbf646ecf (patch)
tree8ca8249ef5b8f4dcfc98a59b2983150d7bf8e59a /src/random-seed
parent45250e66cc68fe238acbf8889a7797829fa0e9d4 (diff)
downloadsystemd-4dd055f907eda30b95c9cdd0b822120bbf646ecf.tar.gz
random-util: add common helper random_write_entropy() for crediting entropy to the kernel's pool
Diffstat (limited to 'src/random-seed')
-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 89452c8e15..63ad977514 100644
--- a/src/random-seed/random-seed.c
+++ b/src/random-seed/random-seed.c
@@ -236,24 +236,10 @@ static int run(int argc, char *argv[]) {
}
}
- if (IN_SET(lets_credit, CREDIT_ENTROPY_YES_PLEASE, CREDIT_ENTROPY_YES_FORCED)) {
- _cleanup_free_ struct rand_pool_info *info = NULL;
-
- info = malloc(offsetof(struct rand_pool_info, buf) + k);
- if (!info)
- return log_oom();
-
- info->entropy_count = k * 8;
- info->buf_size = k;
- memcpy(info->buf, buf, k);
-
- if (ioctl(random_fd, RNDADDENTROPY, info) < 0)
- return log_warning_errno(errno, "Failed to credit entropy, ignoring: %m");
- } else {
- r = loop_write(random_fd, buf, (size_t) k, false);
- if (r < 0)
- log_error_errno(r, "Failed to write seed to /dev/urandom: %m");
- }
+ r = random_write_entropy(random_fd, buf, k,
+ IN_SET(lets_credit, CREDIT_ENTROPY_YES_PLEASE, CREDIT_ENTROPY_YES_FORCED));
+ if (r < 0)
+ log_error_errno(r, "Failed to write seed to /dev/urandom: %m");
}
}