]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
getentropy(3): Fallback to kern.arandom sysctl on older kernels
authorcem <cem@FreeBSD.org>
Wed, 21 Mar 2018 23:52:37 +0000 (23:52 +0000)
committercem <cem@FreeBSD.org>
Wed, 21 Mar 2018 23:52:37 +0000 (23:52 +0000)
commita6cf8211622dd53f331111d7bb56277eab2aee80
tree89b2e8d77cc61374d4b43269a3b6a4edaeff6f67
parent819725ff5d3d4e0029aba9c49c81a3cd35899899
getentropy(3): Fallback to kern.arandom sysctl on older kernels

On older kernels, when userspace program disables SIGSYS, catch ENOSYS and
emulate getrandom(2) syscall with the kern.arandom sysctl (via existing
arc4_sysctl wrapper).

Special care is taken to faithfully emulate EFAULT on NULL pointers, because
sysctl(3) as used by kern.arandom ignores NULL oldp.  (This was caught by
getentropy(3) ATF tests.)

Reported by: kib
Reviewed by: kib
Discussed with: delphij
Sponsored by: Dell EMC Isilon
Differential Revision: https://reviews.freebsd.org/D14785
lib/libc/gen/arc4random.c
lib/libc/gen/getentropy.c
lib/libc/include/libc_private.h
lib/libc/sys/Symbol.map
lib/libc/tests/gen/getentropy_test.c