From dc5bd74fbbc1812cf9005a431b77db2d8293cc75 Mon Sep 17 00:00:00 2001 From: gnattu Date: Sat, 1 Feb 2025 14:34:08 +0800 Subject: [PATCH 1/6] libxml2: fallback to internal entropy --- .../0000-fallback-to-internal-entropy.patch | 48 +++++++++++++++++++ builder/scripts.d/25-libxml2.sh | 9 ++++ docker-build-win64.sh | 2 + docker-build.sh | 2 + .../9999-fallback-to-internal-entropy.patch | 48 +++++++++++++++++++ msys2/PKGBUILD/20-mingw-w64-libxml2/PKGBUILD | 10 +++- 6 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 builder/patches/libxml2/0000-fallback-to-internal-entropy.patch create mode 100644 msys2/PKGBUILD/20-mingw-w64-libxml2/9999-fallback-to-internal-entropy.patch diff --git a/builder/patches/libxml2/0000-fallback-to-internal-entropy.patch b/builder/patches/libxml2/0000-fallback-to-internal-entropy.patch new file mode 100644 index 00000000000..ad5d91c24af --- /dev/null +++ b/builder/patches/libxml2/0000-fallback-to-internal-entropy.patch @@ -0,0 +1,48 @@ +diff --git a/dict.c b/dict.c +index 49e1c6bf..b125fa6c 100644 +--- a/dict.c ++++ b/dict.c +@@ -961,9 +961,19 @@ xmlInitRandom(void) { + sizeof(globalRngState), + BCRYPT_USE_SYSTEM_PREFERRED_RNG); + if (!BCRYPT_SUCCESS(status)) { ++ int var; + fprintf(stderr, "libxml2: BCryptGenRandom failed with " +- "error code %lu\n", GetLastError()); +- abort(); ++ "error code %lu, using internal entropy\n", GetLastError()); ++ ++ memset(globalRngState, 0, sizeof(globalRngState)); ++ ++ globalRngState[0] = ++ (unsigned) time(NULL) ^ ++ HASH_ROL((unsigned) ((size_t) &xmlInitRandom & 0xFFFFFFFF), 8); ++ globalRngState[1] = ++ HASH_ROL((unsigned) ((size_t) &xmlRngMutex & 0xFFFFFFFF), 16) ^ ++ HASH_ROL((unsigned) ((size_t) &var & 0xFFFFFFFF), 24); ++ break; + } + #elif defined(HAVE_GETENTROPY) + while (1) { +@@ -971,9 +981,19 @@ xmlInitRandom(void) { + break; + + if (errno != EINTR) { ++ int var; + fprintf(stderr, "libxml2: getentropy failed with " +- "error code %d\n", errno); +- abort(); ++ "error code %d, using internal entropy\n", errno); ++ ++ memset(globalRngState, 0, sizeof(globalRngState)); ++ ++ globalRngState[0] = ++ (unsigned) time(NULL) ^ ++ HASH_ROL((unsigned) ((size_t) &xmlInitRandom & 0xFFFFFFFF), 8); ++ globalRngState[1] = ++ HASH_ROL((unsigned) ((size_t) &xmlRngMutex & 0xFFFFFFFF), 16) ^ ++ HASH_ROL((unsigned) ((size_t) &var & 0xFFFFFFFF), 24); ++ break; + } + } + #else diff --git a/builder/scripts.d/25-libxml2.sh b/builder/scripts.d/25-libxml2.sh index 558ab0f6ec3..fa4f3ea1f38 100755 --- a/builder/scripts.d/25-libxml2.sh +++ b/builder/scripts.d/25-libxml2.sh @@ -7,6 +7,10 @@ ffbuild_enabled() { return 0 } +ffbuild_dockerstage() { + to_df "RUN --mount=src=${SELF},dst=/stage.sh --mount=src=patches/libxml2,dst=/patches run_stage /stage.sh" +} + ffbuild_dockerbuild() { # libxml2 is macOS built-in [[ $TARGET == mac* ]] && return 0 @@ -14,6 +18,11 @@ ffbuild_dockerbuild() { git-mini-clone "$SCRIPT_REPO" "$SCRIPT_COMMIT" libxml2 cd libxml2 + for patch in /patches/*.patch; do + echo "Applying $patch" + patch -p1 < "$patch" + done + local myconf=( --prefix="$FFBUILD_PREFIX" --without-python diff --git a/docker-build-win64.sh b/docker-build-win64.sh index 51ddd954bef..79723f2e3e7 100755 --- a/docker-build-win64.sh +++ b/docker-build-win64.sh @@ -49,6 +49,8 @@ popd # LIBXML2 git clone --depth=1 https://github.com/GNOME/libxml2.git pushd libxml2 +# Fallback to internal entropy when system native method failed +git apply ${SOURCE_DIR}/builder/patches/libxml2/0000-fallback-to-internal-entropy.patch ./autogen.sh \ --prefix=${FF_DEPS_PREFIX} \ --host=${FF_TOOLCHAIN} \ diff --git a/docker-build.sh b/docker-build.sh index 4ebc0cc07bb..be4c281fe88 100755 --- a/docker-build.sh +++ b/docker-build.sh @@ -74,6 +74,8 @@ prepare_extra_common() { fi git clone -b ${libxml2_ver} --depth=1 https://github.com/GNOME/libxml2.git pushd libxml2 + # Fallback to internal entropy when system native method failed + git apply ${SOURCE_DIR}/builder/patches/libxml2/0000-fallback-to-internal-entropy.patch ./autogen.sh \ ${CROSS_OPT} \ --prefix=${TARGET_DIR} \ diff --git a/msys2/PKGBUILD/20-mingw-w64-libxml2/9999-fallback-to-internal-entropy.patch b/msys2/PKGBUILD/20-mingw-w64-libxml2/9999-fallback-to-internal-entropy.patch new file mode 100644 index 00000000000..ad5d91c24af --- /dev/null +++ b/msys2/PKGBUILD/20-mingw-w64-libxml2/9999-fallback-to-internal-entropy.patch @@ -0,0 +1,48 @@ +diff --git a/dict.c b/dict.c +index 49e1c6bf..b125fa6c 100644 +--- a/dict.c ++++ b/dict.c +@@ -961,9 +961,19 @@ xmlInitRandom(void) { + sizeof(globalRngState), + BCRYPT_USE_SYSTEM_PREFERRED_RNG); + if (!BCRYPT_SUCCESS(status)) { ++ int var; + fprintf(stderr, "libxml2: BCryptGenRandom failed with " +- "error code %lu\n", GetLastError()); +- abort(); ++ "error code %lu, using internal entropy\n", GetLastError()); ++ ++ memset(globalRngState, 0, sizeof(globalRngState)); ++ ++ globalRngState[0] = ++ (unsigned) time(NULL) ^ ++ HASH_ROL((unsigned) ((size_t) &xmlInitRandom & 0xFFFFFFFF), 8); ++ globalRngState[1] = ++ HASH_ROL((unsigned) ((size_t) &xmlRngMutex & 0xFFFFFFFF), 16) ^ ++ HASH_ROL((unsigned) ((size_t) &var & 0xFFFFFFFF), 24); ++ break; + } + #elif defined(HAVE_GETENTROPY) + while (1) { +@@ -971,9 +981,19 @@ xmlInitRandom(void) { + break; + + if (errno != EINTR) { ++ int var; + fprintf(stderr, "libxml2: getentropy failed with " +- "error code %d\n", errno); +- abort(); ++ "error code %d, using internal entropy\n", errno); ++ ++ memset(globalRngState, 0, sizeof(globalRngState)); ++ ++ globalRngState[0] = ++ (unsigned) time(NULL) ^ ++ HASH_ROL((unsigned) ((size_t) &xmlInitRandom & 0xFFFFFFFF), 8); ++ globalRngState[1] = ++ HASH_ROL((unsigned) ((size_t) &xmlRngMutex & 0xFFFFFFFF), 16) ^ ++ HASH_ROL((unsigned) ((size_t) &var & 0xFFFFFFFF), 24); ++ break; + } + } + #else diff --git a/msys2/PKGBUILD/20-mingw-w64-libxml2/PKGBUILD b/msys2/PKGBUILD/20-mingw-w64-libxml2/PKGBUILD index 33b3563ea6e..53e8ab3744d 100644 --- a/msys2/PKGBUILD/20-mingw-w64-libxml2/PKGBUILD +++ b/msys2/PKGBUILD/20-mingw-w64-libxml2/PKGBUILD @@ -29,13 +29,15 @@ source=("https://download.gnome.org/sources/libxml2/${pkgver%.*}/${_realname}-${ 0027-decoding-segfault.patch 0029-xml2-config-win-paths.patch 0030-pkgconfig-add-Cflags-private.patch - 0031-apply-msvc-relocation.patch) + 0031-apply-msvc-relocation.patch + 9999-fallback-to-internal-entropy.patch) sha256sums=('59912db536ab56a3996489ea0299768c7bcffe57169f0235e7f962a91f483590' '9b61db9f5dbffa545f4b8d78422167083a8568c59bd1129f94138f936cf6fc1f' '0391a4b267ba7251ca74ff2e98bf4c0332a14b618e8147a9341ec5617e45d9d9' '278b4531da3d2aabda080c412c5122b471202dd6df67768b38bb0c31c7a0e508' '06c0afaf1b8dec10d6f23dec983026cddf992528ffbc1cc50418302fabf9dee0' - 'b4e3cf5faf0ba1100e2ae6b632dc429c0b25c8caca327e0888b41341d6ddbf9a') + 'b4e3cf5faf0ba1100e2ae6b632dc429c0b25c8caca327e0888b41341d6ddbf9a' + 'SKIP') export FF_MINGW_PREFIX="${MINGW_PREFIX}/ffbuild" @@ -66,6 +68,10 @@ prepare() { apply_patch_with_msg \ 0029-xml2-config-win-paths.patch + # https://github.com/jellyfin/jellyfin/issues/13467 + apply_patch_with_msg \ + 9999-fallback-to-internal-entropy.patch + NOCONFIGURE=1 ./autogen.sh } From 814add9b7d7b652ae8fdf24d56f85be777e4814a Mon Sep 17 00:00:00 2001 From: gnattu Date: Sat, 1 Feb 2025 14:49:11 +0800 Subject: [PATCH 2/6] libxml2: no need to patch focal build --- docker-build.sh | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docker-build.sh b/docker-build.sh index be4c281fe88..f9d38a047cb 100755 --- a/docker-build.sh +++ b/docker-build.sh @@ -74,8 +74,10 @@ prepare_extra_common() { fi git clone -b ${libxml2_ver} --depth=1 https://github.com/GNOME/libxml2.git pushd libxml2 - # Fallback to internal entropy when system native method failed - git apply ${SOURCE_DIR}/builder/patches/libxml2/0000-fallback-to-internal-entropy.patch + if [[ $(lsb_release -c -s) != "focal" ]]; then + # Fallback to internal entropy when system native method failed + git apply ${SOURCE_DIR}/builder/patches/libxml2/0000-fallback-to-internal-entropy.patch + fi ./autogen.sh \ ${CROSS_OPT} \ --prefix=${TARGET_DIR} \ From d1b5c369662b14470562f79ed4ea9add0c9e66c8 Mon Sep 17 00:00:00 2001 From: gnattu Date: Sat, 1 Feb 2025 15:10:46 +0800 Subject: [PATCH 3/6] libxml2: pin stable version for windows build --- docker-build-win64.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-build-win64.sh b/docker-build-win64.sh index 79723f2e3e7..a74848be0ba 100755 --- a/docker-build-win64.sh +++ b/docker-build-win64.sh @@ -49,6 +49,8 @@ popd # LIBXML2 git clone --depth=1 https://github.com/GNOME/libxml2.git pushd libxml2 +libxml2_ver="v2.13.5" +git checkout ${libxml2_ver} # Fallback to internal entropy when system native method failed git apply ${SOURCE_DIR}/builder/patches/libxml2/0000-fallback-to-internal-entropy.patch ./autogen.sh \ From 964bf4acd610ada202972c2641e93b11eb5b9644 Mon Sep 17 00:00:00 2001 From: gnattu Date: Sat, 1 Feb 2025 15:21:09 +0800 Subject: [PATCH 4/6] ci: checkout full repo for libxml2 --- docker-build-win64.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-build-win64.sh b/docker-build-win64.sh index a74848be0ba..f000ad6ffe7 100755 --- a/docker-build-win64.sh +++ b/docker-build-win64.sh @@ -47,7 +47,7 @@ popd popd # LIBXML2 -git clone --depth=1 https://github.com/GNOME/libxml2.git +git clone https://github.com/GNOME/libxml2.git pushd libxml2 libxml2_ver="v2.13.5" git checkout ${libxml2_ver} From f83fd1b38f11763f0043ac1c0760184d67eaa656 Mon Sep 17 00:00:00 2001 From: gnattu Date: Sat, 1 Feb 2025 15:49:23 +0800 Subject: [PATCH 5/6] libxml2: use new patch --- ...-Fallback-to-internal-entropy-master.patch | 73 ++++++++++++++++++ ...1-dict-Fallback-to-internal-entropy.patch} | 75 ++++++++++++------- builder/scripts.d/25-libxml2.sh | 2 +- docker-build-win64.sh | 6 +- docker-build.sh | 2 +- .../9999-fallback-to-internal-entropy.patch | 48 ------------ msys2/PKGBUILD/20-mingw-w64-libxml2/PKGBUILD | 7 +- 7 files changed, 125 insertions(+), 88 deletions(-) create mode 100644 builder/patches/libxml2/master/0001-dict-Fallback-to-internal-entropy-master.patch rename builder/patches/libxml2/{0000-fallback-to-internal-entropy.patch => v2.13.5/0001-dict-Fallback-to-internal-entropy.patch} (52%) delete mode 100644 msys2/PKGBUILD/20-mingw-w64-libxml2/9999-fallback-to-internal-entropy.patch diff --git a/builder/patches/libxml2/master/0001-dict-Fallback-to-internal-entropy-master.patch b/builder/patches/libxml2/master/0001-dict-Fallback-to-internal-entropy-master.patch new file mode 100644 index 00000000000..aa6f1332f5c --- /dev/null +++ b/builder/patches/libxml2/master/0001-dict-Fallback-to-internal-entropy-master.patch @@ -0,0 +1,73 @@ +From fafdb8d58fd001bd167608e9b23d1a3a1f252281 Mon Sep 17 00:00:00 2001 +From: nyanmisaka +Date: Sat, 1 Feb 2025 15:08:12 +0800 +Subject: [PATCH] dict: Fallback to internal entropy + +Signed-off-by: nyanmisaka +--- + dict.c | 42 +++++++++++++++++++++++++++--------------- + 1 file changed, 27 insertions(+), 15 deletions(-) + +diff --git a/dict.c b/dict.c +index ccd8b54..f4010e4 100644 +--- a/dict.c ++++ b/dict.c +@@ -957,28 +957,40 @@ xmlInitRandom(void) { + status = BCryptGenRandom(NULL, (unsigned char *) globalRngState, + sizeof(globalRngState), + BCRYPT_USE_SYSTEM_PREFERRED_RNG); +- if (!BCRYPT_SUCCESS(status)) +- xmlAbort("libxml2: BCryptGenRandom failed with error code %lu\n", +- GetLastError()); ++ if (!BCRYPT_SUCCESS(status)) { ++ xmlPrintErrorMessage("libxml2: BCryptGenRandom failed with " ++ "error code %lu, using internal entropy\n", ++ GetLastError()); ++ goto internal_entropy; ++ } ++ return; + #elif HAVE_DECL_GETENTROPY + while (1) { + if (getentropy(globalRngState, sizeof(globalRngState)) == 0) + break; + +- if (errno != EINTR) +- xmlAbort("libxml2: getentropy failed with error code %d\n", +- errno); ++ if (errno != EINTR) { ++ xmlPrintErrorMessage("libxml2: getentropy failed with " ++ "error code %d, using internal entropy\n", ++ errno); ++ goto internal_entropy; ++ } + } +-#else +- int var; +- +- globalRngState[0] = +- (unsigned) time(NULL) ^ +- HASH_ROL((unsigned) ((size_t) &xmlInitRandom & 0xFFFFFFFF), 8); +- globalRngState[1] = +- HASH_ROL((unsigned) ((size_t) &xmlRngMutex & 0xFFFFFFFF), 16) ^ +- HASH_ROL((unsigned) ((size_t) &var & 0xFFFFFFFF), 24); ++ return; + #endif ++internal_entropy: ++ { ++ int var; ++ ++ memset(globalRngState, 0, sizeof(globalRngState)); ++ ++ globalRngState[0] = ++ (unsigned) time(NULL) ^ ++ HASH_ROL((unsigned) ((size_t) &xmlInitRandom & 0xFFFFFFFF), 8); ++ globalRngState[1] = ++ HASH_ROL((unsigned) ((size_t) &xmlRngMutex & 0xFFFFFFFF), 16) ^ ++ HASH_ROL((unsigned) ((size_t) &var & 0xFFFFFFFF), 24); ++ } + } + } + +-- +2.34.1 + diff --git a/builder/patches/libxml2/0000-fallback-to-internal-entropy.patch b/builder/patches/libxml2/v2.13.5/0001-dict-Fallback-to-internal-entropy.patch similarity index 52% rename from builder/patches/libxml2/0000-fallback-to-internal-entropy.patch rename to builder/patches/libxml2/v2.13.5/0001-dict-Fallback-to-internal-entropy.patch index ad5d91c24af..46337c011d7 100644 --- a/builder/patches/libxml2/0000-fallback-to-internal-entropy.patch +++ b/builder/patches/libxml2/v2.13.5/0001-dict-Fallback-to-internal-entropy.patch @@ -1,48 +1,67 @@ +From 09b9b54c88cb45e5892ca2b5e0f4e4e33877cc4a Mon Sep 17 00:00:00 2001 +From: nyanmisaka +Date: Sat, 1 Feb 2025 15:19:30 +0800 +Subject: [PATCH] dict: Fallback to internal entropy + +Signed-off-by: nyanmisaka +--- + dict.c | 32 +++++++++++++++++++------------- + 1 file changed, 19 insertions(+), 13 deletions(-) + diff --git a/dict.c b/dict.c -index 49e1c6bf..b125fa6c 100644 +index 49e1c6bf..301ef61b 100644 --- a/dict.c +++ b/dict.c -@@ -961,9 +961,19 @@ xmlInitRandom(void) { - sizeof(globalRngState), +@@ -962,9 +962,10 @@ xmlInitRandom(void) { BCRYPT_USE_SYSTEM_PREFERRED_RNG); if (!BCRYPT_SUCCESS(status)) { -+ int var; fprintf(stderr, "libxml2: BCryptGenRandom failed with " - "error code %lu\n", GetLastError()); - abort(); + "error code %lu, using internal entropy\n", GetLastError()); -+ -+ memset(globalRngState, 0, sizeof(globalRngState)); -+ -+ globalRngState[0] = -+ (unsigned) time(NULL) ^ -+ HASH_ROL((unsigned) ((size_t) &xmlInitRandom & 0xFFFFFFFF), 8); -+ globalRngState[1] = -+ HASH_ROL((unsigned) ((size_t) &xmlRngMutex & 0xFFFFFFFF), 16) ^ -+ HASH_ROL((unsigned) ((size_t) &var & 0xFFFFFFFF), 24); -+ break; ++ goto internal_entropy; } ++ return; #elif defined(HAVE_GETENTROPY) while (1) { -@@ -971,9 +981,19 @@ xmlInitRandom(void) { - break; + if (getentropy(globalRngState, sizeof(globalRngState)) == 0) +@@ -972,20 +973,25 @@ xmlInitRandom(void) { if (errno != EINTR) { -+ int var; fprintf(stderr, "libxml2: getentropy failed with " - "error code %d\n", errno); - abort(); + "error code %d, using internal entropy\n", errno); -+ -+ memset(globalRngState, 0, sizeof(globalRngState)); -+ -+ globalRngState[0] = -+ (unsigned) time(NULL) ^ -+ HASH_ROL((unsigned) ((size_t) &xmlInitRandom & 0xFFFFFFFF), 8); -+ globalRngState[1] = -+ HASH_ROL((unsigned) ((size_t) &xmlRngMutex & 0xFFFFFFFF), 16) ^ -+ HASH_ROL((unsigned) ((size_t) &var & 0xFFFFFFFF), 24); -+ break; ++ goto internal_entropy; } } - #else +-#else +- int var; +- +- globalRngState[0] = +- (unsigned) time(NULL) ^ +- HASH_ROL((unsigned) ((size_t) &xmlInitRandom & 0xFFFFFFFF), 8); +- globalRngState[1] = +- HASH_ROL((unsigned) ((size_t) &xmlRngMutex & 0xFFFFFFFF), 16) ^ +- HASH_ROL((unsigned) ((size_t) &var & 0xFFFFFFFF), 24); ++ return; + #endif ++internal_entropy: ++ { ++ int var; ++ ++ memset(globalRngState, 0, sizeof(globalRngState)); ++ ++ globalRngState[0] = ++ (unsigned) time(NULL) ^ ++ HASH_ROL((unsigned) ((size_t) &xmlInitRandom & 0xFFFFFFFF), 8); ++ globalRngState[1] = ++ HASH_ROL((unsigned) ((size_t) &xmlRngMutex & 0xFFFFFFFF), 16) ^ ++ HASH_ROL((unsigned) ((size_t) &var & 0xFFFFFFFF), 24); ++ } + } + } + +-- +2.34.1 + diff --git a/builder/scripts.d/25-libxml2.sh b/builder/scripts.d/25-libxml2.sh index fa4f3ea1f38..aab7b50310a 100755 --- a/builder/scripts.d/25-libxml2.sh +++ b/builder/scripts.d/25-libxml2.sh @@ -8,7 +8,7 @@ ffbuild_enabled() { } ffbuild_dockerstage() { - to_df "RUN --mount=src=${SELF},dst=/stage.sh --mount=src=patches/libxml2,dst=/patches run_stage /stage.sh" + to_df "RUN --mount=src=${SELF},dst=/stage.sh --mount=src=patches/libxml2/master,dst=/patches run_stage /stage.sh" } ffbuild_dockerbuild() { diff --git a/docker-build-win64.sh b/docker-build-win64.sh index f000ad6ffe7..c9b0ea5b933 100755 --- a/docker-build-win64.sh +++ b/docker-build-win64.sh @@ -47,12 +47,10 @@ popd popd # LIBXML2 -git clone https://github.com/GNOME/libxml2.git +git clone --depth=1 https://github.com/GNOME/libxml2.git pushd libxml2 -libxml2_ver="v2.13.5" -git checkout ${libxml2_ver} # Fallback to internal entropy when system native method failed -git apply ${SOURCE_DIR}/builder/patches/libxml2/0000-fallback-to-internal-entropy.patch +git apply ${SOURCE_DIR}/builder/patches/libxml2/master/0001-dict-Fallback-to-internal-entropy-master.patch ./autogen.sh \ --prefix=${FF_DEPS_PREFIX} \ --host=${FF_TOOLCHAIN} \ diff --git a/docker-build.sh b/docker-build.sh index f9d38a047cb..1ffa3d3db03 100755 --- a/docker-build.sh +++ b/docker-build.sh @@ -76,7 +76,7 @@ prepare_extra_common() { pushd libxml2 if [[ $(lsb_release -c -s) != "focal" ]]; then # Fallback to internal entropy when system native method failed - git apply ${SOURCE_DIR}/builder/patches/libxml2/0000-fallback-to-internal-entropy.patch + git apply ${SOURCE_DIR}/builder/patches/libxml2/v2.13.5/0001-dict-Fallback-to-internal-entropy.patch fi ./autogen.sh \ ${CROSS_OPT} \ diff --git a/msys2/PKGBUILD/20-mingw-w64-libxml2/9999-fallback-to-internal-entropy.patch b/msys2/PKGBUILD/20-mingw-w64-libxml2/9999-fallback-to-internal-entropy.patch deleted file mode 100644 index ad5d91c24af..00000000000 --- a/msys2/PKGBUILD/20-mingw-w64-libxml2/9999-fallback-to-internal-entropy.patch +++ /dev/null @@ -1,48 +0,0 @@ -diff --git a/dict.c b/dict.c -index 49e1c6bf..b125fa6c 100644 ---- a/dict.c -+++ b/dict.c -@@ -961,9 +961,19 @@ xmlInitRandom(void) { - sizeof(globalRngState), - BCRYPT_USE_SYSTEM_PREFERRED_RNG); - if (!BCRYPT_SUCCESS(status)) { -+ int var; - fprintf(stderr, "libxml2: BCryptGenRandom failed with " -- "error code %lu\n", GetLastError()); -- abort(); -+ "error code %lu, using internal entropy\n", GetLastError()); -+ -+ memset(globalRngState, 0, sizeof(globalRngState)); -+ -+ globalRngState[0] = -+ (unsigned) time(NULL) ^ -+ HASH_ROL((unsigned) ((size_t) &xmlInitRandom & 0xFFFFFFFF), 8); -+ globalRngState[1] = -+ HASH_ROL((unsigned) ((size_t) &xmlRngMutex & 0xFFFFFFFF), 16) ^ -+ HASH_ROL((unsigned) ((size_t) &var & 0xFFFFFFFF), 24); -+ break; - } - #elif defined(HAVE_GETENTROPY) - while (1) { -@@ -971,9 +981,19 @@ xmlInitRandom(void) { - break; - - if (errno != EINTR) { -+ int var; - fprintf(stderr, "libxml2: getentropy failed with " -- "error code %d\n", errno); -- abort(); -+ "error code %d, using internal entropy\n", errno); -+ -+ memset(globalRngState, 0, sizeof(globalRngState)); -+ -+ globalRngState[0] = -+ (unsigned) time(NULL) ^ -+ HASH_ROL((unsigned) ((size_t) &xmlInitRandom & 0xFFFFFFFF), 8); -+ globalRngState[1] = -+ HASH_ROL((unsigned) ((size_t) &xmlRngMutex & 0xFFFFFFFF), 16) ^ -+ HASH_ROL((unsigned) ((size_t) &var & 0xFFFFFFFF), 24); -+ break; - } - } - #else diff --git a/msys2/PKGBUILD/20-mingw-w64-libxml2/PKGBUILD b/msys2/PKGBUILD/20-mingw-w64-libxml2/PKGBUILD index 53e8ab3744d..a3a3efb9515 100644 --- a/msys2/PKGBUILD/20-mingw-w64-libxml2/PKGBUILD +++ b/msys2/PKGBUILD/20-mingw-w64-libxml2/PKGBUILD @@ -29,8 +29,7 @@ source=("https://download.gnome.org/sources/libxml2/${pkgver%.*}/${_realname}-${ 0027-decoding-segfault.patch 0029-xml2-config-win-paths.patch 0030-pkgconfig-add-Cflags-private.patch - 0031-apply-msvc-relocation.patch - 9999-fallback-to-internal-entropy.patch) + 0031-apply-msvc-relocation.patch) sha256sums=('59912db536ab56a3996489ea0299768c7bcffe57169f0235e7f962a91f483590' '9b61db9f5dbffa545f4b8d78422167083a8568c59bd1129f94138f936cf6fc1f' '0391a4b267ba7251ca74ff2e98bf4c0332a14b618e8147a9341ec5617e45d9d9' @@ -68,10 +67,6 @@ prepare() { apply_patch_with_msg \ 0029-xml2-config-win-paths.patch - # https://github.com/jellyfin/jellyfin/issues/13467 - apply_patch_with_msg \ - 9999-fallback-to-internal-entropy.patch - NOCONFIGURE=1 ./autogen.sh } From c4f3e21b2d7d8f7ce02253ea9a75b29187d32c6e Mon Sep 17 00:00:00 2001 From: gnattu Date: Sat, 1 Feb 2025 16:16:54 +0800 Subject: [PATCH 6/6] libxml2: fix msys2 build --- msys2/PKGBUILD/20-mingw-w64-libxml2/PKGBUILD | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/msys2/PKGBUILD/20-mingw-w64-libxml2/PKGBUILD b/msys2/PKGBUILD/20-mingw-w64-libxml2/PKGBUILD index a3a3efb9515..33b3563ea6e 100644 --- a/msys2/PKGBUILD/20-mingw-w64-libxml2/PKGBUILD +++ b/msys2/PKGBUILD/20-mingw-w64-libxml2/PKGBUILD @@ -35,8 +35,7 @@ sha256sums=('59912db536ab56a3996489ea0299768c7bcffe57169f0235e7f962a91f483590' '0391a4b267ba7251ca74ff2e98bf4c0332a14b618e8147a9341ec5617e45d9d9' '278b4531da3d2aabda080c412c5122b471202dd6df67768b38bb0c31c7a0e508' '06c0afaf1b8dec10d6f23dec983026cddf992528ffbc1cc50418302fabf9dee0' - 'b4e3cf5faf0ba1100e2ae6b632dc429c0b25c8caca327e0888b41341d6ddbf9a' - 'SKIP') + 'b4e3cf5faf0ba1100e2ae6b632dc429c0b25c8caca327e0888b41341d6ddbf9a') export FF_MINGW_PREFIX="${MINGW_PREFIX}/ffbuild"