mirror of
https://passt.top/passt
synced 2025-05-17 23:25:35 +02:00
util: Add general low-level random bytes helper
Currently secret_init() open codes getting good quality random bytes from the OS, either via getrandom(2) or reading /dev/random. We're going to add at least one more place that needs random data in future, so make a general helper for getting random bytes. While we're there, fix a number of minor bugs: - getrandom() can theoretically return a "short read", so handle that case - getrandom() as well as read can return a transient EINTR - We would attempt to read data from /dev/random if we failed to open it (open() returns -1), but not if we opened it as fd 0 (unlikely, but ok) - More specific error reporting Signed-off-by: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
parent
a60703e899
commit
71d5deed5e
3 changed files with 57 additions and 29 deletions
2
util.h
2
util.h
|
@ -263,6 +263,8 @@ static inline bool mod_between(unsigned x, unsigned i, unsigned j, unsigned m)
|
|||
/* FPRINTF() intentionally silences cert-err33-c clang-tidy warnings */
|
||||
#define FPRINTF(f, ...) (void)fprintf(f, __VA_ARGS__)
|
||||
|
||||
void raw_random(void *buf, size_t buflen);
|
||||
|
||||
/*
|
||||
* Workarounds for https://github.com/llvm/llvm-project/issues/58992
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue