зеркало из https://github.com/github/ruby.git
random.c (fill_random_bytes_syscall): use "__NR_" prefix on Linux
glibc still does not define the SYS_getrandom alias for __NR_getrandom in the Linux kernel. However, installing up-to-date Linux kernel headers (linux-libc-dev >= 3.17 package on Debian) will get the __NR_getrandom syscall number defined properly without relying on glibc. This allows users with a modern kernel+headers to use the getrandom syscall without waiting on glibc support. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
3e34d8a44f
Коммит
208018fb9d
4
random.c
4
random.c
|
@ -505,7 +505,7 @@ fill_random_bytes_syscall(void *seed, size_t size, int unused)
|
|||
CryptGenRandom(prov, size, seed);
|
||||
return 0;
|
||||
}
|
||||
#elif defined __linux__ && defined SYS_getrandom
|
||||
#elif defined __linux__ && defined __NR_getrandom
|
||||
#include <linux/random.h>
|
||||
|
||||
# ifndef GRND_NONBLOCK
|
||||
|
@ -522,7 +522,7 @@ fill_random_bytes_syscall(void *seed, size_t size, int need_secure)
|
|||
if (!need_secure)
|
||||
flags = GRND_NONBLOCK;
|
||||
errno = 0;
|
||||
ret = syscall(SYS_getrandom, seed, size, flags);
|
||||
ret = syscall(__NR_getrandom, seed, size, flags);
|
||||
if (errno == ENOSYS) {
|
||||
ATOMIC_SET(try_syscall, 0);
|
||||
return -1;
|
||||
|
|
Загрузка…
Ссылка в новой задаче