Rewrite getentropy.
The error handling was a mess, resulting in an infinite loop
(and a test timeout) if you actually took the /dev/urandom
fallback. I'm also unconvinced that the getrandom(2) path was correct
because of the various reasons why we might get a short count back
(http://man7.org/linux/man-pages/man2/getrandom.2.html). In this version,
the two paths look very similar except for the getrandom(2) failure case,
where it's now much clearer that we just give up so that we can boot
(http://b/33059407).
Bug: http://b/33059407
Bug: http://b/67015565
Test: ran tests on hikey and a ICS Galaxy Nexus
Change-Id: Ie715d59b46f7a70bae66943c316168838787b40d
diff --git a/libc/Android.bp b/libc/Android.bp
index 0f58204..53ca694 100644
--- a/libc/Android.bp
+++ b/libc/Android.bp
@@ -538,7 +538,7 @@
cc_library_static {
defaults: ["libc_defaults"],
srcs: [
- // These two depend on getentropy_linux.c, which isn't in libc_ndk.a.
+ // These two depend on getentropy, which isn't in libc_ndk.a.
"upstream-openbsd/lib/libc/crypt/arc4random.c",
"upstream-openbsd/lib/libc/crypt/arc4random_uniform.c",
@@ -817,9 +817,7 @@
// initialized, resulting in nullptr dereferences.
"bionic/getauxval.cpp",
- // These four require getauxval, which isn't available on older
- // platforms.
- "bionic/getentropy_linux.c",
+ // These require getauxval, which isn't available on older platforms.
"bionic/sysconf.cpp",
"bionic/vdso.cpp",
"bionic/setjmp_cookie.cpp",
@@ -1266,6 +1264,7 @@
"bionic/futimens.cpp",
"bionic/getcwd.cpp",
"bionic/getdomainname.cpp",
+ "bionic/getentropy.cpp",
"bionic/gethostname.cpp",
"bionic/getpagesize.cpp",
"bionic/getpgrp.cpp",