summaryrefslogtreecommitdiff
path: root/system/libarchive
diff options
context:
space:
mode:
Diffstat (limited to 'system/libarchive')
-rw-r--r--system/libarchive/APKBUILD28
-rw-r--r--system/libarchive/disable-locale-tests.patch570
-rw-r--r--system/libarchive/disable-unaligned-access-arm32-xxhash.patch12
-rw-r--r--system/libarchive/fix-test-32-bit-zstd.patch29
-rw-r--r--system/libarchive/seek-error.patch11
5 files changed, 630 insertions, 20 deletions
diff --git a/system/libarchive/APKBUILD b/system/libarchive/APKBUILD
index 18017ee7c..9fcca3319 100644
--- a/system/libarchive/APKBUILD
+++ b/system/libarchive/APKBUILD
@@ -1,21 +1,29 @@
-# Contributor: Sergei Lukin <sergej.lukin@gmail.com>
+# Contributor: Sergey Lukin <sergej.lukin@gmail.com>
# Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=libarchive
-pkgver=3.4.0
-pkgrel=1
-pkgdesc="Library for creating and reading streaming archives"
-url="https://libarchive.org/"
+pkgver=3.7.2
+pkgrel=0
+pkgdesc="Multi-format archive and compression library"
+url="https://www.libarchive.org/"
arch="all"
-options="!check" # needs EUC-JP and KOI8R support in iconv
license="BSD-2-Clause AND BSD-3-Clause AND Public-Domain"
+depends=""
makedepends="zlib-dev bzip2-dev xz-dev lz4-dev acl-dev openssl-dev expat-dev
attr-dev zstd-dev"
subpackages="$pkgname-dev $pkgname-doc $pkgname-tools"
source="https://github.com/libarchive/libarchive/releases/download/v$pkgver/$pkgname-$pkgver.tar.gz
- seek-error.patch
+ disable-locale-tests.patch
+ disable-unaligned-access-arm32-xxhash.patch
+ fix-test-32-bit-zstd.patch
"
# secfixes:
+# 3.6.2-r0:
+# - CVE-2022-36227
+# 3.6.1-r0:
+# - CVE-2022-26280
+# 3.4.2-r0:
+# - CVE-2020-9308
# 3.3.2-r1:
# - CVE-2017-14166
@@ -53,5 +61,7 @@ tools() {
ln -s bsdcpio "$subpkgdir"/usr/bin/cpio
}
-sha512sums="2f9e2a551a6bcab56fb1a030b5d656df7299a3d151465aa02f0420d344d2fada49dee4755b3abff9095f62519e14dc9af8afa1695ecc6d5fdb4f0b28e6ede852 libarchive-3.4.0.tar.gz
-ff2567f243ba7e9ce20bc4f7fa422a922c5c23049004efdd8f71f29f93ab9be9aadd4c100e8c6dca318442d583fbad9bd6466017a23f83af18b9808c718b9fce seek-error.patch"
+sha512sums="1af253203df3014d1fbf3e99ebdc7aa2a3f036c7c2606d0f0550c49973b0fff99ee7262f4a6e20090c0806c40e964731334360daa3b718bde40108183eacc8a1 libarchive-3.7.2.tar.gz
+27cf2aaa3e70e3a2a9944fac0c96c411e669c7e1a48daad1423bff68eef0f49153e5ef9d22dc9591a65353119d7fe203a28258ab82278aeb86b46fe691bcfb6a disable-locale-tests.patch
+56a2b13b6cd7b127c04ac50ebf49994ec91ff2467d5d0f32b8428bd4df82b167459d4630dee5d1b5119f70b04ea6fe4411d44b768e0f313fa302c9e5fe51b7cd disable-unaligned-access-arm32-xxhash.patch
+f0a8e3881e742395afc74e418eceab419280152f0884fd6b9dc971d90e117de1cd0a7578c08f14f694c75b904f12fa71fb0102dde0d67a095f6369b3413f7348 fix-test-32-bit-zstd.patch"
diff --git a/system/libarchive/disable-locale-tests.patch b/system/libarchive/disable-locale-tests.patch
new file mode 100644
index 000000000..885490c95
--- /dev/null
+++ b/system/libarchive/disable-locale-tests.patch
@@ -0,0 +1,570 @@
+--- libarchive-3.6.0/libarchive/test/test_gnutar_filename_encoding.c.old 2022-02-09 06:24:12.000000000 -0600
++++ libarchive-3.6.0/libarchive/test/test_gnutar_filename_encoding.c 2022-02-20 17:08:38.820000000 -0600
+@@ -75,7 +75,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "ru_RU.KOI8-R")) {
++ if (1) {
+ skipping("KOI8-R locale not available on this system.");
+ return;
+ }
+@@ -116,7 +116,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "ru_RU.KOI8-R")) {
++ if (1) {
+ skipping("KOI8-R locale not available on this system.");
+ return;
+ }
+@@ -157,8 +157,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "Russian_Russia") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP1251")) {
++ if (1) {
+ skipping("KOI8-R locale not available on this system.");
+ return;
+ }
+@@ -242,7 +241,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "Russian_Russia")) {
++ if (1) {
+ skipping("Russian_Russia locale not available on this system.");
+ return;
+ }
+@@ -277,7 +276,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "ja_JP.eucJP")) {
++ if (1) {
+ skipping("eucJP locale not available on this system.");
+ return;
+ }
+@@ -357,8 +356,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "Japanese_Japan") &&
+- NULL == setlocale(LC_ALL, "ja_JP.SJIS")) {
++ if (1) {
+ skipping("CP932/SJIS locale not available on this system.");
+ return;
+ }
+--- libarchive-3.6.0/libarchive/test/test_pax_filename_encoding.c.old 2022-02-09 06:24:12.000000000 -0600
++++ libarchive-3.6.0/libarchive/test/test_pax_filename_encoding.c 2022-02-20 17:09:41.050000000 -0600
+@@ -342,7 +342,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "ru_RU.KOI8-R")) {
++ if (1) {
+ skipping("KOI8-R locale not available on this system.");
+ return;
+ }
+@@ -388,8 +388,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "Russian_Russia") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP1251")) {
++ if (1) {
+ skipping("KOI8-R locale not available on this system.");
+ return;
+ }
+@@ -435,7 +434,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "ja_JP.eucJP")) {
++ if (1) {
+ skipping("eucJP locale not available on this system.");
+ return;
+ }
+@@ -482,8 +481,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "Japanese_Japan") &&
+- NULL == setlocale(LC_ALL, "ja_JP.SJIS")) {
++ if (1) {
+ skipping("eucJP locale not available on this system.");
+ return;
+ }
+--- libarchive-3.6.0/libarchive/test/test_read_format_cpio_filename.c.old 2022-02-09 06:24:12.000000000 -0600
++++ libarchive-3.6.0/libarchive/test/test_read_format_cpio_filename.c 2022-02-20 17:16:18.580000000 -0600
+@@ -91,7 +91,7 @@
+ /*
+ * Read UTF-8 filename in ja_JP.eucJP with "hdrcharset=UTF-8" option.
+ */
+- if (NULL == setlocale(LC_ALL, "ja_JP.eucJP")) {
++ if (1) {
+ skipping("ja_JP.eucJP locale not available on this system.");
+ return;
+ }
+@@ -191,8 +191,7 @@
+ /*
+ * Read CP866 filename in ru_RU.KOI8-R with "hdrcharset=CP866" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia.20866") &&
+- NULL == setlocale(LC_ALL, "ru_RU.KOI8-R")) {
++ if (1) {
+ skipping("ru_RU.KOI8-R locale not available on this system.");
+ return;
+ }
+@@ -296,8 +295,7 @@
+ /*
+ * Read KOI8-R filename in ru_RU.CP866 with "hdrcharset=KOI8-R" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia.866") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP866")) {
++ if (1) {
+ skipping("ru_RU.CP866 locale not available on this system.");
+ return;
+ }
+@@ -401,8 +399,7 @@
+ /*
+ * Read UTF-8 filename in ru_RU.KOI8-R with "hdrcharset=UTF-8" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia.20866") &&
+- NULL == setlocale(LC_ALL, "ru_RU.KOI8-R")) {
++ if (1) {
+ skipping("ru_RU.KOI8-R locale not available on this system.");
+ return;
+ }
+@@ -454,8 +451,7 @@
+ /*
+ * Read UTF-8 filename in ru_RU.CP866 with "hdrcharset=UTF-8" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia.866") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP866")) {
++ if (1) {
+ skipping("ru_RU.CP866 locale not available on this system.");
+ return;
+ }
+@@ -553,8 +549,7 @@
+ /*
+ * Read eucJP filename in CP932/SJIS with "hdrcharset=eucJP" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Japanese_Japan") &&
+- NULL == setlocale(LC_ALL, "ja_JP.SJIS")) {
++ if (1) {
+ skipping("CP932 locale not available on this system.");
+ return;
+ }
+@@ -604,8 +599,7 @@
+ /*
+ * Read UTF-8 filename in CP932/SJIS with "hdrcharset=UTF-8" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Japanese_Japan") &&
+- NULL == setlocale(LC_ALL, "ja_JP.SJIS")) {
++ if (1) {
+ skipping("CP932 locale not available on this system.");
+ return;
+ }
+@@ -656,8 +650,7 @@
+ /*
+ * Read CP866 filename in CP1251 with "hdrcharset=CP866" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP1251")) {
++ if (1) {
+ skipping("CP1251 locale not available on this system.");
+ return;
+ }
+@@ -715,7 +708,7 @@
+ /*
+ * Read CP866 filename in CP1251 without "hdrcharset=CP866" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia")) {
++ if (1) {
+ skipping("Russian_Russia locale not available on this system.");
+ return;
+ }
+@@ -761,8 +754,7 @@
+ /*
+ * Read KOI8-R filename in CP1251 with "hdrcharset=KOI8-R" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP1251")) {
++ if (1) {
+ skipping("CP1251 locale not available on this system.");
+ return;
+ }
+@@ -814,8 +806,7 @@
+ /*
+ * Read KOI8-R filename in CP1251 with "hdrcharset=KOI8-R" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP1251")) {
++ if (1) {
+ skipping("CP1251 locale not available on this system.");
+ return;
+ }
+--- libarchive-3.6.0/libarchive/test/test_read_format_gtar_filename.c.old 2022-02-09 06:24:12.000000000 -0600
++++ libarchive-3.6.0/libarchive/test/test_read_format_gtar_filename.c 2022-02-20 17:17:56.960000000 -0600
+@@ -89,8 +89,7 @@
+ /*
+ * Read CP866 filename in ru_RU.KOI8-R with "hdrcharset=CP866" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia.20866") &&
+- NULL == setlocale(LC_ALL, "ru_RU.KOI8-R")) {
++ if (1) {
+ skipping("ru_RU.KOI8-R locale not available on this system.");
+ return;
+ }
+@@ -194,8 +193,7 @@
+ /*
+ * Read KOI8-R filename in ru_RU.CP866 with "hdrcharset=KOI8-R" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia.866") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP866")) {
++ if (1) {
+ skipping("ru_RU.CP866 locale not available on this system.");
+ return;
+ }
+@@ -299,8 +297,7 @@
+ /*
+ * Read eucJP filename in CP932/SJIS with "hdrcharset=eucJP" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Japanese_Japan") &&
+- NULL == setlocale(LC_ALL, "ja_JP.SJIS")) {
++ if (1) {
+ skipping("CP932 locale not available on this system.");
+ return;
+ }
+@@ -350,8 +347,7 @@
+ /*
+ * Read CP866 filename in CP1251 with "hdrcharset=CP866" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP1251")) {
++ if (1) {
+ skipping("CP1251 locale not available on this system.");
+ return;
+ }
+@@ -409,7 +405,7 @@
+ /*
+ * Read CP866 filename in CP1251 without "hdrcharset=CP866" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia")) {
++ if (1) {
+ skipping("Russian_Russia locale not available on this system.");
+ return;
+ }
+@@ -455,8 +451,7 @@
+ /*
+ * Read KOI8-R filename in CP1251 with "hdrcharset=KOI8-R" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP1251")) {
++ if (1) {
+ skipping("CP1251 locale not available on this system.");
+ return;
+ }
+--- libarchive-3.6.0/libarchive/test/test_read_format_rar.c.old 2022-02-09 06:24:12.000000000 -0600
++++ libarchive-3.6.0/libarchive/test/test_read_format_rar.c 2022-02-20 17:19:17.710000000 -0600
+@@ -336,8 +336,7 @@
+ struct archive_entry *ae;
+ struct archive *a;
+
+- if (NULL == setlocale(LC_ALL, "Japanese_Japan") &&
+- NULL == setlocale(LC_ALL, "ja_JP.SJIS")) {
++ if (1) {
+ skipping("CP932 locale not available on this system.");
+ return;
+ }
+--- libarchive-3.6.0/libarchive/test/test_read_format_zip_filename.c.old 2022-02-09 06:24:12.000000000 -0600
++++ libarchive-3.6.0/libarchive/test/test_read_format_zip_filename.c 2022-02-20 17:29:22.640000000 -0600
+@@ -176,7 +176,7 @@
+ * because the file name in the sample file is UTF-8 and
+ * Bit 11 of its general purpose bit flag is set.
+ */
+- if (NULL == setlocale(LC_ALL, "ja_JP.eucJP")) {
++ if (1) {
+ skipping("ja_JP.eucJP locale not availablefilename_ on "
+ "this system.");
+ return;
+@@ -343,8 +343,7 @@
+ /*
+ * Read CP866 filename in ru_RU.KOI8-R with "hdrcharset=CP866" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia.20866") &&
+- NULL == setlocale(LC_ALL, "ru_RU.KOI8-R")) {
++ if (1) {
+ skipping("ru_RU.KOI8-R locale not available on this system.");
+ return;
+ }
+@@ -456,8 +455,7 @@
+ /*
+ * Read KOI8-R filename in ru_RU.CP866 with "hdrcharset=KOI8-R" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia.866") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP866")) {
++ if (1) {
+ skipping("ru_RU.CP866 locale not available on this system.");
+ return;
+ }
+@@ -569,8 +567,7 @@
+ /*
+ * Read UTF-8 filename in ru_RU.KOI8-R with "hdrcharset=UTF-8" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia.20866") &&
+- NULL == setlocale(LC_ALL, "ru_RU.KOI8-R")) {
++ if (1) {
+ skipping("ru_RU.KOI8-R locale not available on this system.");
+ return;
+ }
+@@ -633,8 +630,7 @@
+ * because the file name in the sample file is UTF-8 and
+ * Bit 11 of its general purpose bit flag is set.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia.866") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP866")) {
++ if (1) {
+ skipping("ru_RU.CP866 locale not available on this system.");
+ return;
+ }
+@@ -809,8 +805,7 @@
+ * because the file name in the sample file is UTF-8 and
+ * Bit 11 of its general purpose bit flag is set.
+ */
+- if (NULL == setlocale(LC_ALL, "Japanese_Japan") &&
+- NULL == setlocale(LC_ALL, "ja_JP.SJIS")) {
++ if (1) {
+ skipping("CP932 locale not available on this system.");
+ return;
+ }
+@@ -884,8 +879,7 @@
+ /*
+ * Read CP866 filename in CP1251 with "hdrcharset=CP866" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP1251")) {
++ if (1) {
+ skipping("CP1251 locale not available on this system.");
+ return;
+ }
+@@ -947,7 +941,7 @@
+ /*
+ * Read CP866 filename in CP1251 without "hdrcharset=CP866" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia")) {
++ if (1) {
+ skipping("Russian_Russia locale not available on this system.");
+ return;
+ }
+@@ -997,8 +991,7 @@
+ /*
+ * Read KOI8-R filename in CP1251 with "hdrcharset=KOI8-R" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP1251")) {
++ if (1) {
+ skipping("CP1251 locale not available on this system.");
+ return;
+ }
+@@ -1056,8 +1049,7 @@
+ * because the file name in the sample file is UTF-8 and
+ * Bit 11 of its general purpose bit flag is set.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP1251")) {
++ if (1) {
+ skipping("CP1251 locale not available on this system.");
+ return;
+ }
+--- libarchive-3.6.0/libarchive/test/test_ustar_filename_encoding.c.old 2022-02-09 06:24:12.000000000 -0600
++++ libarchive-3.6.0/libarchive/test/test_ustar_filename_encoding.c 2022-02-20 17:30:54.440000000 -0600
+@@ -75,7 +75,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "ru_RU.KOI8-R")) {
++ if (1) {
+ skipping("KOI8-R locale not available on this system.");
+ return;
+ }
+@@ -116,7 +116,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "ru_RU.KOI8-R")) {
++ if (1) {
+ skipping("KOI8-R locale not available on this system.");
+ return;
+ }
+@@ -157,8 +157,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "Russian_Russia") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP1251")) {
++ if (1) {
+ skipping("KOI8-R locale not available on this system.");
+ return;
+ }
+@@ -242,7 +241,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "Russian_Russia")) {
++ if (1) {
+ skipping("Russian_Russia locale not available on this system.");
+ return;
+ }
+@@ -277,7 +276,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "ja_JP.eucJP")) {
++ if (1) {
+ skipping("eucJP locale not available on this system.");
+ return;
+ }
+@@ -357,8 +356,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "Japanese_Japan") &&
+- NULL == setlocale(LC_ALL, "ja_JP.SJIS")) {
++ if (1) {
+ skipping("CP932/SJIS locale not available on this system.");
+ return;
+ }
+--- libarchive-3.6.0/libarchive/test/test_zip_filename_encoding.c.old 2022-02-09 06:24:12.000000000 -0600
++++ libarchive-3.6.0/libarchive/test/test_zip_filename_encoding.c 2022-02-20 17:41:15.060000000 -0600
+@@ -122,7 +122,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "ru_RU.KOI8-R")) {
++ if (1) {
+ skipping("KOI8-R locale not available on this system.");
+ return;
+ }
+@@ -222,7 +222,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "ru_RU.CP1251")) {
++ if (1) {
+ skipping("Russian_Russia locale not available on this system.");
+ return;
+ }
+@@ -265,7 +265,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "Russian_Russia")) {
++ if (1) {
+ skipping("Russian_Russia locale not available on this system.");
+ return;
+ }
+@@ -334,7 +334,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "ja_JP.eucJP")) {
++ if (1) {
+ skipping("eucJP locale not available on this system.");
+ return;
+ }
+@@ -433,8 +433,7 @@
+ char buff[4096];
+ size_t used;
+
+- if (NULL == setlocale(LC_ALL, "Japanese_Japan") &&
+- NULL == setlocale(LC_ALL, "ja_JP.SJIS")) {
++ if (1) {
+ skipping("CP932/SJIS locale not available on this system.");
+ return;
+ }
+--- libarchive-3.6.0/libarchive/test/test_read_format_tar_filename.c.old 2022-02-09 06:24:12.000000000 -0600
++++ libarchive-3.6.0/libarchive/test/test_read_format_tar_filename.c 2022-02-20 17:54:34.540000000 -0600
+@@ -47,8 +47,7 @@
+ * Read filename in ru_RU.CP866 with "hdrcharset=KOI8-R" option.
+ * We should correctly read two filenames.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia.866") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP866")) {
++ if (1) {
+ skipping("ru_RU.CP866 locale not available on this system.");
+ return;
+ }
+@@ -276,8 +275,7 @@
+ * Read filename in CP1251 with "hdrcharset=KOI8-R" option.
+ * We should correctly read two filenames.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP1251")) {
++ if (1) {
+ skipping("CP1251 locale not available on this system.");
+ return;
+ }
+--- libarchive-3.6.0/libarchive/test/test_read_format_ustar_filename.c.old 2022-02-09 06:24:12.000000000 -0600
++++ libarchive-3.6.0/libarchive/test/test_read_format_ustar_filename.c 2022-02-20 17:56:02.310000000 -0600
+@@ -90,8 +90,7 @@
+ /*
+ * Read CP866 filename in ru_RU.KOI8-R with "hdrcharset=CP866" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia.20866") &&
+- NULL == setlocale(LC_ALL, "ru_RU.KOI8-R")) {
++ if (1) {
+ skipping("ru_RU.KOI8-R locale not available on this system.");
+ return;
+ }
+@@ -200,8 +199,7 @@
+ /*
+ * Read KOI8-R filename in ru_RU.CP866 with "hdrcharset=KOI8-R" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia.866") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP866")) {
++ if (1) {
+ skipping("ru_RU.CP866 locale not available on this system.");
+ return;
+ }
+@@ -311,8 +309,7 @@
+ /*
+ * Read eucJP filename in CP932/SJIS with "hdrcharset=eucJP" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Japanese_Japan") &&
+- NULL == setlocale(LC_ALL, "ja_JP.SJIS")) {
++ if (1) {
+ skipping("CP932 locale not available on this system.");
+ return;
+ }
+@@ -365,8 +362,7 @@
+ /*
+ * Read CP866 filename in CP1251 with "hdrcharset=CP866" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP1251")) {
++ if (1) {
+ skipping("CP1251 locale not available on this system.");
+ return;
+ }
+@@ -427,7 +423,7 @@
+ /*
+ * Read CP866 filename in CP1251 without "hdrcharset=CP866" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia")) {
++ if (1) {
+ skipping("Russian_Russia locale not available on this system.");
+ return;
+ }
+@@ -476,8 +472,7 @@
+ /*
+ * Read KOI8-R filename in CP1251 with "hdrcharset=KOI8-R" option.
+ */
+- if (NULL == setlocale(LC_ALL, "Russian_Russia") &&
+- NULL == setlocale(LC_ALL, "ru_RU.CP1251")) {
++ if (1) {
+ skipping("CP1251 locale not available on this system.");
+ return;
+ }
diff --git a/system/libarchive/disable-unaligned-access-arm32-xxhash.patch b/system/libarchive/disable-unaligned-access-arm32-xxhash.patch
new file mode 100644
index 000000000..0b24a8854
--- /dev/null
+++ b/system/libarchive/disable-unaligned-access-arm32-xxhash.patch
@@ -0,0 +1,12 @@
+diff -ur a/libarchive/xxhash.c b/libarchive/xxhash.c
+--- a/libarchive/xxhash.c 2022-05-20 18:47:43.907673368 +0000
++++ b/libarchive/xxhash.c 2022-05-20 18:49:43.019255133 +0000
+@@ -46,7 +46,7 @@
+ ** If you know your target CPU supports unaligned memory access, you want to force this option manually to improve performance.
+ ** You can also enable this parameter if you know your input data will always be aligned (boundaries of 4, for U32).
+ */
+-#if defined(__ARM_FEATURE_UNALIGNED) || defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64)
++#if (defined(__ARM_FEATURE_UNALIGNED) && defined(__aarch64__)) || defined(__i386) || defined(_M_IX86) || defined(__x86_64__) || defined(_M_X64)
+ # define XXH_USE_UNALIGNED_ACCESS 1
+ #endif
+
diff --git a/system/libarchive/fix-test-32-bit-zstd.patch b/system/libarchive/fix-test-32-bit-zstd.patch
new file mode 100644
index 000000000..5f43c2626
--- /dev/null
+++ b/system/libarchive/fix-test-32-bit-zstd.patch
@@ -0,0 +1,29 @@
+From 3bd918d92f8c34ba12de9c6604d96f9e262a59fc Mon Sep 17 00:00:00 2001
+From: Martin Matuska <martin@matuska.de>
+Date: Tue, 12 Sep 2023 08:54:47 +0200
+Subject: [PATCH] tests: fix zstd long option test for 32-bit architectures
+
+Fixes #1968
+---
+ libarchive/test/test_write_filter_zstd.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/libarchive/test/test_write_filter_zstd.c b/libarchive/test/test_write_filter_zstd.c
+index 3cdbd812a..c9731f1b6 100644
+--- a/libarchive/test/test_write_filter_zstd.c
++++ b/libarchive/test/test_write_filter_zstd.c
+@@ -161,8 +161,12 @@ DEFINE_TEST(test_write_filter_zstd)
+ archive_write_set_filter_option(a, NULL, "max-frame-size", "1048576"));
+ #endif
+ #if ZSTD_VERSION_NUMBER >= MINVER_LONG
+- assertEqualIntA(a, ARCHIVE_OK,
+- archive_write_set_filter_option(a, NULL, "long", "27"));
++ if ((int)(sizeof(size_t) == 4))
++ assertEqualIntA(a, ARCHIVE_OK,
++ archive_write_set_filter_option(a, NULL, "long", "26"));
++ else
++ assertEqualIntA(a, ARCHIVE_OK,
++ archive_write_set_filter_option(a, NULL, "long", "27"));
+ assertEqualIntA(a, ARCHIVE_FAILED,
+ archive_write_set_filter_option(a, NULL, "long", "-1")); /* negative */
+ #endif
diff --git a/system/libarchive/seek-error.patch b/system/libarchive/seek-error.patch
deleted file mode 100644
index e14b281b1..000000000
--- a/system/libarchive/seek-error.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- libarchive-3.3.1/libarchive/archive_read_disk_entry_from_file.c.old 2017-02-25 17:37:08.000000000 +0000
-+++ libarchive-3.3.1/libarchive/archive_read_disk_entry_from_file.c 2017-07-04 01:31:03.297134418 +0000
-@@ -1865,7 +1865,7 @@
- #endif
- #endif /* defined(HAVE_LINUX_FIEMAP_H) */
-
--#if defined(SEEK_HOLE) && defined(SEEK_DATA)
-+#if defined(SEEK_HOLE) && defined(SEEK_DATA) && defined(__MAKE_ADELIE_WORK_AGAIN__)
-
- /*
- * SEEK_HOLE sparse interface (FreeBSD, Linux, Solaris)