Index: configure.ac ================================================================== --- configure.ac +++ configure.ac @@ -899,11 +899,11 @@ AC_SUBST(ENCODINGS_A, "encodings.a") AC_SUBST(ENCODINGS_ENCODINGS_A, "encodings/encodings.a") ]) ]) -AC_CHECK_FUNCS(arc4random random, break) +AC_CHECK_FUNCS(arc4random getrandom random, break) AS_IF([test x"$host_os" != x"morphos"], [ AC_CHECK_LIB(dl, dlopen, LIBS="$LIBS -ldl") ]) AC_CHECK_HEADERS_ONCE(dlfcn.h) Index: src/OFObject.m ================================================================== --- src/OFObject.m +++ src/OFObject.m @@ -121,12 +121,18 @@ #endif uint32_t of_random(void) { -#ifdef HAVE_ARC4RANDOM +#if defined(HAVE_ARC4RANDOM) return arc4random(); +#elif defined(HAVE_GETRANDOM) + uint32_t buffer; + + OF_ENSURE(getrandom(&buffer, sizeof(buffer), 0) == sizeof(buffer)); + + return buffer; #else static of_once_t onceControl; of_once(&onceControl, initRandom); # ifdef HAVE_RANDOM