| Index: patches/nss-urandom-abort.patch
|
| diff --git a/patches/nss-urandom-abort.patch b/patches/nss-urandom-abort.patch
|
| index d5f55c839445a8bcaf4161daf0fc9564ca0b20f1..2d1375e125e2439784c84094ad135e73d2e5184d 100644
|
| --- a/patches/nss-urandom-abort.patch
|
| +++ b/patches/nss-urandom-abort.patch
|
| @@ -1,8 +1,8 @@
|
| -diff --git a/lib/freebl/unix_rand.c b/lib/freebl/unix_rand.c
|
| -index 579040e..2f9b3e5 100644
|
| ---- a/lib/freebl/unix_rand.c
|
| -+++ b/lib/freebl/unix_rand.c
|
| -@@ -916,8 +916,19 @@ void RNG_SystemInfoForRNG(void)
|
| +diff --git a/nss/lib/freebl/unix_rand.c b/nss/lib/freebl/unix_rand.c
|
| +index c9674ea..e0d8f58 100644
|
| +--- a/nss/lib/freebl/unix_rand.c
|
| ++++ b/nss/lib/freebl/unix_rand.c
|
| +@@ -917,8 +917,19 @@ void RNG_SystemInfoForRNG(void)
|
| #if defined(BSDI) || defined(FREEBSD) || defined(NETBSD) \
|
| || defined(OPENBSD) || defined(DARWIN) || defined(LINUX) \
|
| || defined(HPUX)
|
| @@ -23,7 +23,7 @@ index 579040e..2f9b3e5 100644
|
| #endif
|
|
|
| #ifdef SOLARIS
|
| -@@ -1134,6 +1145,11 @@ static void rng_systemJitter(void)
|
| +@@ -1135,6 +1146,11 @@ static void rng_systemJitter(void)
|
| }
|
| }
|
|
|
| @@ -35,7 +35,7 @@ index 579040e..2f9b3e5 100644
|
| size_t RNG_SystemRNG(void *dest, size_t maxLen)
|
| {
|
| FILE *file;
|
| -@@ -1144,7 +1160,10 @@ size_t RNG_SystemRNG(void *dest, size_t maxLen)
|
| +@@ -1145,7 +1161,10 @@ size_t RNG_SystemRNG(void *dest, size_t maxLen)
|
|
|
| file = fopen("/dev/urandom", "r");
|
| if (file == NULL) {
|
| @@ -47,7 +47,7 @@ index 579040e..2f9b3e5 100644
|
| }
|
| /* Read from the underlying file descriptor directly to bypass stdio
|
| * buffering and avoid reading more bytes than we need from /dev/urandom.
|
| -@@ -1164,8 +1183,10 @@ size_t RNG_SystemRNG(void *dest, size_t maxLen)
|
| +@@ -1165,8 +1184,10 @@ size_t RNG_SystemRNG(void *dest, size_t maxLen)
|
| }
|
| fclose(file);
|
| if (fileBytes != maxLen) {
|
| @@ -60,3 +60,70 @@ index 579040e..2f9b3e5 100644
|
| }
|
| return fileBytes;
|
| }
|
| +diff --git a/patches/nss-urandom-abort.patch b/patches/nss-urandom-abort.patch
|
| +index d5f55c8..e69de29 100644
|
| +--- a/patches/nss-urandom-abort.patch
|
| ++++ b/patches/nss-urandom-abort.patch
|
| +@@ -1,62 +0,0 @@
|
| +-diff --git a/lib/freebl/unix_rand.c b/lib/freebl/unix_rand.c
|
| +-index 579040e..2f9b3e5 100644
|
| +---- a/lib/freebl/unix_rand.c
|
| +-+++ b/lib/freebl/unix_rand.c
|
| +-@@ -916,8 +916,19 @@ void RNG_SystemInfoForRNG(void)
|
| +- #if defined(BSDI) || defined(FREEBSD) || defined(NETBSD) \
|
| +- || defined(OPENBSD) || defined(DARWIN) || defined(LINUX) \
|
| +- || defined(HPUX)
|
| +-- if (bytes)
|
| +-+ if (bytes == SYSTEM_RNG_SEED_COUNT)
|
| +- return;
|
| +-+
|
| +-+ /*
|
| +-+ * Modified to abort the process if it failed to read from /dev/urandom.
|
| +-+ *
|
| +-+ * See crbug.com/244661 for details.
|
| +-+ */
|
| +-+ fprintf(stderr, "[ERROR:%s(%d)] NSS read %zu bytes (expected %d bytes) "
|
| +-+ "from /dev/urandom. Abort process.\n", __FILE__, __LINE__,
|
| +-+ bytes, SYSTEM_RNG_SEED_COUNT);
|
| +-+ fflush(stderr);
|
| +-+ abort();
|
| +- #endif
|
| +-
|
| +- #ifdef SOLARIS
|
| +-@@ -1134,6 +1145,11 @@ static void rng_systemJitter(void)
|
| +- }
|
| +- }
|
| +-
|
| +-+/*
|
| +-+ * Modified to abort the process if it failed to read from /dev/urandom.
|
| +-+ *
|
| +-+ * See crbug.com/244661 for details.
|
| +-+ */
|
| +- size_t RNG_SystemRNG(void *dest, size_t maxLen)
|
| +- {
|
| +- FILE *file;
|
| +-@@ -1144,7 +1160,10 @@ size_t RNG_SystemRNG(void *dest, size_t maxLen)
|
| +-
|
| +- file = fopen("/dev/urandom", "r");
|
| +- if (file == NULL) {
|
| +-- return rng_systemFromNoise(dest, maxLen);
|
| +-+ fprintf(stderr, "[ERROR:%s(%d)] NSS failed to read from /dev/urandom. "
|
| +-+ "Abort process.\n", __FILE__, __LINE__);
|
| +-+ fflush(stderr);
|
| +-+ abort();
|
| +- }
|
| +- /* Read from the underlying file descriptor directly to bypass stdio
|
| +- * buffering and avoid reading more bytes than we need from /dev/urandom.
|
| +-@@ -1164,8 +1183,10 @@ size_t RNG_SystemRNG(void *dest, size_t maxLen)
|
| +- }
|
| +- fclose(file);
|
| +- if (fileBytes != maxLen) {
|
| +-- PORT_SetError(SEC_ERROR_NEED_RANDOM); /* system RNG failed */
|
| +-- fileBytes = 0;
|
| +-+ fprintf(stderr, "[ERROR:%s(%d)] NSS failed to read from /dev/urandom. "
|
| +-+ "Abort process.\n", __FILE__, __LINE__);
|
| +-+ fflush(stderr);
|
| +-+ abort();
|
| +- }
|
| +- return fileBytes;
|
| +- }
|
|
|