chromium/third_party/libxml/chromium/remove-getentropy.patch

This patch removes calls to getentropy() and BCryptGetRandom() because they
aren't implemented or supported on certain platforms based on the trybot
results I saw. I will try upstreaming a configure script flag soon to replace
this patch file. This patch is safe because it reverts the random number
generation behavior before a recent libxml upstream patch.

diff --git a/dict.c b/dict.c
index c843bb7b..96435d52 100644
--- a/dict.c
+++ b/dict.c
@@ -909,17 +909,12 @@ xmlDictQLookup(xmlDictPtr dict, const xmlChar *prefix, const xmlChar *name) {
 #ifdef _WIN32
   #define WIN32_LEAN_AND_MEAN
   #include <windows.h>
-  #include <bcrypt.h>
 #elif defined(HAVE_GETENTROPY)
   #ifdef HAVE_UNISTD_H
     #include <unistd.h>
   #endif
-  #ifdef HAVE_SYS_RANDOM_H
-    #include <sys/random.h>
-  #endif
-#else
-  #include <time.h>
 #endif
+#include <time.h>
 
 static xmlMutex xmlRngMutex;
 
@@ -931,29 +926,6 @@ xmlInitRandom(void) {
     xmlInitMutex(&xmlRngMutex);
 
     {
-#ifdef _WIN32
-        NTSTATUS status;
-
-        status = BCryptGenRandom(NULL, (unsigned char *) globalRngState,
-                                 sizeof(globalRngState),
-                                 BCRYPT_USE_SYSTEM_PREFERRED_RNG);
-        if (!BCRYPT_SUCCESS(status)) {
-            fprintf(stderr, "libxml2: BCryptGenRandom failed with "
-                    "error code %lu\n", GetLastError());
-            abort();
-        }
-#elif defined(HAVE_GETENTROPY)
-        while (1) {
-            if (getentropy(globalRngState, sizeof(globalRngState)) == 0)
-                break;
-
-            if (errno != EINTR) {
-                fprintf(stderr, "libxml2: getentropy failed with "
-                        "error code %d\n", errno);
-                abort();
-            }
-        }
-#else
         int var;
 
         globalRngState[0] =
@@ -962,7 +934,6 @@ xmlInitRandom(void) {
         globalRngState[1] =
                 HASH_ROL((unsigned) ((size_t) &xmlRngMutex & 0xFFFFFFFF), 16) ^
                 HASH_ROL((unsigned) ((size_t) &var & 0xFFFFFFFF), 24);
-#endif
     }
 }