Rebased to version 3.4.3

+ added fix for lchmod check

Resolves: #1837828
Version: 3.4.3-1
This commit is contained in:
Ondrej Dubaj 2020-05-22 13:06:27 +02:00
parent b557459e1a
commit fe44045f94
3 changed files with 71 additions and 2 deletions

View File

@ -0,0 +1,64 @@
From 291d0c218e256750228b731a693e6b96e7ed5449 Mon Sep 17 00:00:00 2001
From: Martin Matuska <martin@matuska.org>
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

View File

@ -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 <odubaj@redhat.com> - 3.4.3-1
- Rebased to version 3.4.3
* Wed Feb 12 2020 Ondrej Dubaj <odubaj@redhat.com> - 3.4.2-1
- Rebased to version 3.4.2

View File

@ -1 +1 @@
SHA512 (libarchive-3.4.2.tar.gz) = a8922e54f2e985889d205ee8a0594c1d30dad950438b602a5be6bb1b274a735ad20a48ed484efd458013a0810d26ee4ae76e3a6c820823243d24ea0593ed7021
SHA512 (libarchive-3.4.3.tar.gz) = d00167dec6e65a0b17b46a1e3bb0242d85716dbc637afd233360cb515b2750dafe0ff0644b9e01ad23534340b405a8551f496c5e39fba9ee99355a515580d65d