diff options
author | Lennart Poettering <lennart@poettering.net> | 2020-06-11 09:53:29 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2020-06-24 15:33:27 +0200 |
commit | 4dd055f907eda30b95c9cdd0b822120bbf646ecf (patch) | |
tree | 8ca8249ef5b8f4dcfc98a59b2983150d7bf8e59a /src/random-seed | |
parent | 45250e66cc68fe238acbf8889a7797829fa0e9d4 (diff) | |
download | systemd-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.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 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"); } } |