xref: /aosp_15_r20/external/cronet/third_party/libxml/chromium/remove-getentropy.patch (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
1*6777b538SAndroid Build Coastguard WorkerThis patch removes calls to getentropy() and BCryptGetRandom() because they
2*6777b538SAndroid Build Coastguard Workeraren't implemented or supported on certain platforms based on the trybot
3*6777b538SAndroid Build Coastguard Workerresults I saw. I will try upstreaming a configure script flag soon to replace
4*6777b538SAndroid Build Coastguard Workerthis patch file. This patch is safe because it reverts the random number
5*6777b538SAndroid Build Coastguard Workergeneration behavior before a recent libxml upstream patch.
6*6777b538SAndroid Build Coastguard Worker
7*6777b538SAndroid Build Coastguard Workerdiff --git a/dict.c b/dict.c
8*6777b538SAndroid Build Coastguard Workerindex 5c9f3aa2..7a492895 100644
9*6777b538SAndroid Build Coastguard Worker--- a/dict.c
10*6777b538SAndroid Build Coastguard Worker+++ b/dict.c
11*6777b538SAndroid Build Coastguard Worker@@ -24,14 +24,10 @@
12*6777b538SAndroid Build Coastguard Worker #include <stdlib.h>
13*6777b538SAndroid Build Coastguard Worker #include <string.h>
14*6777b538SAndroid Build Coastguard Worker #include <time.h>
15*6777b538SAndroid Build Coastguard Worker-#ifdef HAVE_SYS_RANDOM_H
16*6777b538SAndroid Build Coastguard Worker-#include <sys/random.h>
17*6777b538SAndroid Build Coastguard Worker-#endif
18*6777b538SAndroid Build Coastguard Worker
19*6777b538SAndroid Build Coastguard Worker #ifdef _WIN32
20*6777b538SAndroid Build Coastguard Worker #define WIN32_LEAN_AND_MEAN
21*6777b538SAndroid Build Coastguard Worker #include <windows.h>
22*6777b538SAndroid Build Coastguard Worker-#include <bcrypt.h>
23*6777b538SAndroid Build Coastguard Worker #endif
24*6777b538SAndroid Build Coastguard Worker
25*6777b538SAndroid Build Coastguard Worker #include "private/dict.h"
26*6777b538SAndroid Build Coastguard Worker@@ -926,29 +922,6 @@ xmlInitRandom(void) {
27*6777b538SAndroid Build Coastguard Worker     xmlInitMutex(&xmlRngMutex);
28*6777b538SAndroid Build Coastguard Worker
29*6777b538SAndroid Build Coastguard Worker     {
30*6777b538SAndroid Build Coastguard Worker-#ifdef _WIN32
31*6777b538SAndroid Build Coastguard Worker-        NTSTATUS status;
32*6777b538SAndroid Build Coastguard Worker-
33*6777b538SAndroid Build Coastguard Worker-        status = BCryptGenRandom(NULL, (unsigned char *) globalRngState,
34*6777b538SAndroid Build Coastguard Worker-                                 sizeof(globalRngState),
35*6777b538SAndroid Build Coastguard Worker-                                 BCRYPT_USE_SYSTEM_PREFERRED_RNG);
36*6777b538SAndroid Build Coastguard Worker-        if (!BCRYPT_SUCCESS(status)) {
37*6777b538SAndroid Build Coastguard Worker-            fprintf(stderr, "libxml2: BCryptGenRandom failed with "
38*6777b538SAndroid Build Coastguard Worker-                    "error code %lu\n", GetLastError());
39*6777b538SAndroid Build Coastguard Worker-            abort();
40*6777b538SAndroid Build Coastguard Worker-        }
41*6777b538SAndroid Build Coastguard Worker-#elif defined(HAVE_GETENTROPY)
42*6777b538SAndroid Build Coastguard Worker-        while (1) {
43*6777b538SAndroid Build Coastguard Worker-            if (getentropy(globalRngState, sizeof(globalRngState)) == 0)
44*6777b538SAndroid Build Coastguard Worker-                break;
45*6777b538SAndroid Build Coastguard Worker-
46*6777b538SAndroid Build Coastguard Worker-            if (errno != EINTR) {
47*6777b538SAndroid Build Coastguard Worker-                fprintf(stderr, "libxml2: getentropy failed with "
48*6777b538SAndroid Build Coastguard Worker-                        "error code %d\n", errno);
49*6777b538SAndroid Build Coastguard Worker-                abort();
50*6777b538SAndroid Build Coastguard Worker-            }
51*6777b538SAndroid Build Coastguard Worker-        }
52*6777b538SAndroid Build Coastguard Worker-#else
53*6777b538SAndroid Build Coastguard Worker         int var;
54*6777b538SAndroid Build Coastguard Worker
55*6777b538SAndroid Build Coastguard Worker         globalRngState[0] =
56*6777b538SAndroid Build Coastguard Worker@@ -957,7 +930,6 @@ xmlInitRandom(void) {
57*6777b538SAndroid Build Coastguard Worker         globalRngState[1] =
58*6777b538SAndroid Build Coastguard Worker                 HASH_ROL((unsigned) ((size_t) &xmlRngMutex & 0xFFFFFFFF), 16) ^
59*6777b538SAndroid Build Coastguard Worker                 HASH_ROL((unsigned) ((size_t) &var & 0xFFFFFFFF), 24);
60*6777b538SAndroid Build Coastguard Worker-#endif
61*6777b538SAndroid Build Coastguard Worker     }
62*6777b538SAndroid Build Coastguard Worker }
63*6777b538SAndroid Build Coastguard Worker
64