From d448beedaf201e8fdbe68b77aecb534cc8e87d2c Mon Sep 17 00:00:00 2001 From: Nathan Froyd Date: Mon, 27 Jun 2016 22:41:32 -0400 Subject: [PATCH] Bug 1282141 - compensate for arc4random_buf not being available on Android; r=jld As a followup to the recent patch that fixed warnings in this area, I discovered that arc4random_buf actually isn't available on Android (?)...possibly only when compiling with recent NDKs. This change enables us to link successfully, as we can use libevent's home-grown implementation. --- .../src/third_party/libevent/evutil_rand.c | 2 +- .../patches/android-arc4random-buf.patch | 34 ++++++++++++++----- 2 files changed, 27 insertions(+), 9 deletions(-) diff --git a/ipc/chromium/src/third_party/libevent/evutil_rand.c b/ipc/chromium/src/third_party/libevent/evutil_rand.c index 0c41765d8a6f..3bab23121842 100644 --- a/ipc/chromium/src/third_party/libevent/evutil_rand.c +++ b/ipc/chromium/src/third_party/libevent/evutil_rand.c @@ -58,7 +58,7 @@ evutil_secure_rng_global_setup_locks_(const int enable_locks) static void ev_arc4random_buf(void *buf, size_t n) { -#if defined(_EVENT_HAVE_ARC4RANDOM_BUF) && !defined(__APPLE__) +#if defined(_EVENT_HAVE_ARC4RANDOM_BUF) && !(defined(__APPLE__) || defined(__ANDROID__)) arc4random_buf(buf, n); #else unsigned char *b = buf; diff --git a/ipc/chromium/src/third_party/libevent/patches/android-arc4random-buf.patch b/ipc/chromium/src/third_party/libevent/patches/android-arc4random-buf.patch index 1ec8c759cb4e..32aa3cdc8c1b 100644 --- a/ipc/chromium/src/third_party/libevent/patches/android-arc4random-buf.patch +++ b/ipc/chromium/src/third_party/libevent/patches/android-arc4random-buf.patch @@ -1,14 +1,32 @@ -e6dd814 evutil_rand.c fixup for clang -diff --git a/ipc/chromium/src/third_party/libevent/evutil_rand.c b/ipc/chromium/src/third_party/libevent/evutil_rand.c -index 86c86b2..0c41765 100644 +only in patch2: +unchanged: --- a/ipc/chromium/src/third_party/libevent/evutil_rand.c +++ b/ipc/chromium/src/third_party/libevent/evutil_rand.c -@@ -59,7 +59,7 @@ static void +@@ -58,7 +58,7 @@ evutil_secure_rng_global_setup_locks_(const int enable_locks) + static void ev_arc4random_buf(void *buf, size_t n) { - #if defined(_EVENT_HAVE_ARC4RANDOM_BUF) && !defined(__APPLE__) -- return arc4random_buf(buf, n); -+ arc4random_buf(buf, n); +-#if defined(_EVENT_HAVE_ARC4RANDOM_BUF) && !defined(__APPLE__) ++#if defined(_EVENT_HAVE_ARC4RANDOM_BUF) && !(defined(__APPLE__) || defined(__ANDROID__)) + arc4random_buf(buf, n); #else unsigned char *b = buf; - +only in patch2: +unchanged: +--- a/ipc/chromium/src/third_party/libevent/patches/android-arc4random-buf.patch ++++ b/ipc/chromium/src/third_party/libevent/patches/android-arc4random-buf.patch +@@ -1,14 +0,0 @@ +-e6dd814 evutil_rand.c fixup for clang +-diff --git a/ipc/chromium/src/third_party/libevent/evutil_rand.c b/ipc/chromium/src/third_party/libevent/evutil_rand.c +-index 86c86b2..0c41765 100644 +---- a/ipc/chromium/src/third_party/libevent/evutil_rand.c +-+++ b/ipc/chromium/src/third_party/libevent/evutil_rand.c +-@@ -59,7 +59,7 @@ static void +- ev_arc4random_buf(void *buf, size_t n) +- { +- #if defined(_EVENT_HAVE_ARC4RANDOM_BUF) && !defined(__APPLE__) +-- return arc4random_buf(buf, n); +-+ arc4random_buf(buf, n); +- #else +- unsigned char *b = buf; +-