diff --git a/libarchive-3.4.3-lchmod-support-check.patch b/libarchive-3.4.3-lchmod-support-check.patch new file mode 100644 index 0000000..32c226a --- /dev/null +++ b/libarchive-3.4.3-lchmod-support-check.patch @@ -0,0 +1,64 @@ +From 291d0c218e256750228b731a693e6b96e7ed5449 Mon Sep 17 00:00:00 2001 +From: Martin Matuska +Date: Fri, 22 May 2020 13:03:55 +0200 +Subject: [PATCH] test_write_disk_secure: properly check if lchmod() is + +--- + libarchive/test/test_write_disk_secure.c | 34 +++++++++++++++++++++--- + 1 file changed, 30 insertions(+), 4 deletions(-) + +diff --git a/libarchive/test/test_write_disk_secure.c b/libarchive/test/test_write_disk_secure.c +index 7cd66c4..44b9ea0 100644 +--- a/libarchive/test/test_write_disk_secure.c ++++ b/libarchive/test/test_write_disk_secure.c +@@ -40,6 +40,10 @@ DEFINE_TEST(test_write_disk_secure) + struct archive *a; + struct archive_entry *ae; + struct stat st; ++#if defined(HAVE_LCHMOD) && defined(HAVE_SYMLINK) && \ ++ defined(S_IRUSR) && defined(S_IWUSR) && defined(S_IXUSR) ++ int working_lchmod; ++#endif + + /* Start with a known umask. */ + assertUmask(UMASK); +@@ -251,10 +255,32 @@ DEFINE_TEST(test_write_disk_secure) + assert(0 == lstat("link_to_dir", &st)); + failure("link_to_dir: st.st_mode=%o", st.st_mode); + assert(S_ISLNK(st.st_mode)); +-#if HAVE_LCHMOD +- /* Systems that lack lchmod() can't set symlink perms, so skip this. */ +- failure("link_to_dir: st.st_mode=%o", st.st_mode); +- assert((st.st_mode & 07777) == 0755); ++#if defined(HAVE_SYMLINK) && defined(HAVE_LCHMOD) && \ ++ defined(S_IRUSR) && defined(S_IWUSR) && defined(S_IXUSR) ++ /* Verify if we are able to lchmod() */ ++ if (symlink("dir", "testlink_to_dir") == 0) { ++ if (lchmod("testlink_to_dir", ++ S_IRUSR | S_IWUSR | S_IXUSR) != 0) { ++ switch (errno) { ++ case ENOTSUP: ++ case ENOSYS: ++#if ENOTSUP != EOPNOTSUPP ++ case EOPNOTSUPP: ++#endif ++ working_lchmod = 0; ++ break; ++ default: ++ working_lchmod = 1; ++ } ++ } else ++ working_lchmod = 1; ++ } else ++ working_lchmod = 0; ++ ++ if (working_lchmod) { ++ failure("link_to_dir: st.st_mode=%o", st.st_mode); ++ assert((st.st_mode & 07777) == 0755); ++ } + #endif + + assert(0 == lstat("dir/filea", &st)); +-- +2.24.1 + diff --git a/libarchive.spec b/libarchive.spec index 750e929..70f8b97 100644 --- a/libarchive.spec +++ b/libarchive.spec @@ -1,7 +1,7 @@ %bcond_without check Name: libarchive -Version: 3.4.2 +Version: 3.4.3 Release: 1%{?dist} Summary: A library for handling streaming archive formats @@ -9,6 +9,8 @@ License: BSD URL: https://www.libarchive.org/ Source0: https://libarchive.org/downloads/%{name}-%{version}.tar.gz +Patch0: libarchive-3.4.3-lchmod-support-check.patch + BuildRequires: automake BuildRequires: bison BuildRequires: bzip2-devel @@ -210,6 +212,9 @@ run_testsuite %changelog +* Fri May 22 2020 Ondrej Dubaj - 3.4.3-1 +- Rebased to version 3.4.3 + * Wed Feb 12 2020 Ondrej Dubaj - 3.4.2-1 - Rebased to version 3.4.2 diff --git a/sources b/sources index dbb4c98..4657f70 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (libarchive-3.4.2.tar.gz) = a8922e54f2e985889d205ee8a0594c1d30dad950438b602a5be6bb1b274a735ad20a48ed484efd458013a0810d26ee4ae76e3a6c820823243d24ea0593ed7021 +SHA512 (libarchive-3.4.3.tar.gz) = d00167dec6e65a0b17b46a1e3bb0242d85716dbc637afd233360cb515b2750dafe0ff0644b9e01ad23534340b405a8551f496c5e39fba9ee99355a515580d65d