mirror of
https://github.com/aria2/aria2.git
synced 2025-01-04 09:03:46 +00:00
Fix getrandom for system with libc not including errno or systems
not supporting ENOSYS in the first place. Fixes GH-347
This commit is contained in:
parent
1ad1d43a6a
commit
ee63dff225
@ -46,6 +46,8 @@
|
||||
#include "fmt.h"
|
||||
|
||||
#ifdef HAVE_GETRANDOM_INTERFACE
|
||||
# include <errno.h>
|
||||
# include <linux/errno.h>
|
||||
# include "getrandom_linux.h"
|
||||
#endif
|
||||
|
||||
@ -95,7 +97,15 @@ void SimpleRandomizer::getRandomBytes(unsigned char* buf, size_t len)
|
||||
static bool have_random_support = true;
|
||||
if (have_random_support) {
|
||||
auto rv = getrandom_linux(buf, len);
|
||||
if (rv != -1 || errno != ENOSYS) {
|
||||
if (rv != -1
|
||||
#ifdef ENOSYS
|
||||
/* If the system does not know ENOSYS at this point, just leave the
|
||||
* check out. If the call failed, we'll not take this branch at all
|
||||
* and disable support below.
|
||||
*/
|
||||
|| errno != ENOSYS
|
||||
#endif
|
||||
) {
|
||||
if (rv < -1) {
|
||||
A2_LOG_ERROR(fmt("Failed to produce randomness: %d", errno));
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user