Dominique Leuenberger 2020-09-10 20:46:16 +00:00 committed by Git OBS Bridge
commit 4897bdedd3
3 changed files with 72 additions and 0 deletions

View File

@ -0,0 +1,65 @@
From 56c095bef0a892dbaf18e45efbec2087d6878a54 Mon Sep 17 00:00:00 2001
From: Martin Matuska <martin@matuska.org>
Date: Fri, 22 May 2020 11:43:43 +0200
Subject: [PATCH] test_write_disk_secure: properly check if lchmod() is
supported
Fixes #1379
---
libarchive/test/test_write_disk_secure.c | 33 +++++++++++++++++++++---
1 file changed, 29 insertions(+), 4 deletions(-)
diff --git a/libarchive/test/test_write_disk_secure.c b/libarchive/test/test_write_disk_secure.c
index 7cd66c41..ff2922a3 100644
--- a/libarchive/test/test_write_disk_secure.c
+++ b/libarchive/test/test_write_disk_secure.c
@@ -40,6 +40,9 @@ DEFINE_TEST(test_write_disk_secure)
struct archive *a;
struct archive_entry *ae;
struct stat st;
+#if defined(HAVE_LCHMOD) && defined(HAVE_SYMLINK)
+ int working_lchmod;
+#endif
/* Start with a known umask. */
assertUmask(UMASK);
@@ -251,10 +254,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.28.0

View File

@ -1,3 +1,9 @@
-------------------------------------------------------------------
Mon Sep 7 17:17:45 UTC 2020 - Andreas Stieger <andreas.stieger@gmx.de>
- fix build with binutils submitted to Factory, adding upstream
libarchive-3.4.3-fix_test_write_disk_secure.patch
-------------------------------------------------------------------
Wed May 20 05:14:18 UTC 2020 - Ismail Dönmez <idonmez@suse.com>

View File

@ -43,6 +43,7 @@ Source2: libarchive.keyring
Source1000: baselibs.conf
Patch1: lib-suffix.patch
Patch2: fix-soversion.patch
Patch3: libarchive-3.4.3-fix_test_write_disk_secure.patch
BuildRequires: cmake
BuildRequires: libacl-devel
BuildRequires: libbz2-devel