X-Git-Url: https://tinc-vpn.org/git/browse?a=blobdiff_plain;f=src%2Frandom.c;h=f2e898f78a6aefea1d196c6f52446c2dc6197328;hb=c45a3fd7319d03bd147448a017f5aaed3b46fdfe;hp=fad7173f5c1ab9f7b3bcb51719ac1a8361d2478d;hpb=0fe69908838248c28624beb540257892db6bdcbd;p=tinc diff --git a/src/random.c b/src/random.c index fad7173f..f2e898f7 100644 --- a/src/random.c +++ b/src/random.c @@ -2,12 +2,12 @@ #include "random.h" -#ifndef HAVE_GETRANDOM +#ifndef HAVE_GETENTROPY static int random_fd = -1; #endif void random_init(void) { -#ifndef HAVE_GETRANDOM +#ifndef HAVE_GETENTROPY random_fd = open("/dev/urandom", O_RDONLY); if(random_fd < 0) { @@ -23,7 +23,7 @@ void random_init(void) { } void random_exit(void) { -#ifndef HAVE_GETRANDOM +#ifndef HAVE_GETENTROPY close(random_fd); #endif } @@ -32,8 +32,9 @@ void randomize(void *vout, size_t outlen) { uint8_t *out = vout; while(outlen) { -#ifdef HAVE_GETRANDOM - ssize_t len = getrandom(out, outlen, 0); +#ifdef HAVE_GETENTROPY + int reqlen = (int) MIN(256, outlen); + int len = !getentropy(out, reqlen) ? reqlen : -1; #else ssize_t len = read(random_fd, out, outlen); #endif