getrandom available only from GLIBC 2.25

This commit is contained in:
David Carlier
2019-12-01 06:15:19 +00:00
parent d4da9b805a
commit 8e85b9cbf3

View File

@ -31,10 +31,15 @@
#endif #endif
#ifdef __linux__ #ifdef __linux__
#if __GLIBC__ >= 2 || __GLIBC_MINOR >= 25
#define _GNU_SOURCE #define _GNU_SOURCE
#include <unistd.h> #include <unistd.h>
#include <sys/syscall.h> #include <sys/syscall.h>
#define arc4random_buf(p, l) do { ssize_t rd = syscall(__NR_getrandom, p, l, 0); if (rd != l) DEBUGF("getrandom failed"); } while(0) #define arc4random_buf(p, l) do { ssize_t rd = syscall(__NR_getrandom, p, l, 0); if (rd != l) DEBUGF("getrandom failed"); } while(0)
#else
#include <time.h>
#define arc4random_buf(p, l) do { srand(time(NULL)); u32 i; u8 *ptr = (u8 *)p; for(i = 0; i < l; i++) ptr[i] = rand() % INT_MAX; } while(0)
#endif
#endif #endif
#include "config.h" #include "config.h"