Chromium Code Reviews| Index: nss/lib/freebl/unix_rand.c |
| =================================================================== |
| --- nss/lib/freebl/unix_rand.c (revision 204056) |
| +++ nss/lib/freebl/unix_rand.c (working copy) |
| @@ -918,6 +918,16 @@ |
| || defined(HPUX) |
| if (bytes) |
| 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 failed to read from /dev/urandom. " |
| + "Abort process.\n", __FILE__, __LINE__); |
| + fflush(stderr); |
| + abort(); |
| #endif |
| #ifdef SOLARIS |
| @@ -968,9 +978,8 @@ |
| /* suppress valgrind warnings due to holes in struct stat */ |
| memset(&stat_buf, 0, sizeof(stat_buf)); |
| - if (stat((char *)fileName, &stat_buf) < 0) |
| - return fileBytes; |
| - RNG_RandomUpdate(&stat_buf, sizeof(stat_buf)); |
| + if (stat((char *)fileName, &stat_buf) == 0) |
| + RNG_RandomUpdate(&stat_buf, sizeof(stat_buf)); |
|
wtc
2013/06/10 19:39:37
This change is required only if we don't have the
|
| file = fopen((char *)fileName, "r"); |
| if (file != NULL) { |
| @@ -1132,7 +1141,15 @@ |
| file = fopen("/dev/urandom", "r"); |
| if (file == NULL) { |
| - return rng_systemFromNoise(dest, maxLen); |
| + /* |
| + * 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 failed to read from /dev/urandom. " |
| + "Abort process.\n", __FILE__, __LINE__); |
| + fflush(stderr); |
| + abort(); |
| } |
| while (maxLen > fileBytes) { |
| bytes = maxLen - fileBytes; |