summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorkientzle <kientzle@FreeBSD.org>2005-09-05 10:23:55 +0000
committerkientzle <kientzle@FreeBSD.org>2005-09-05 10:23:55 +0000
commit0dbebe5f5da3f0856514bc98c955f555cd7ad0f8 (patch)
treed495126a94492cf1ae4a4509da09b4a1bf60842f /lib
parentccbd218f2dbdf7d1015f85608f7bc73616d22643 (diff)
downloadFreeBSD-src-0dbebe5f5da3f0856514bc98c955f555cd7ad0f8.zip
FreeBSD-src-0dbebe5f5da3f0856514bc98c955f555cd7ad0f8.tar.gz
Terminate metadata restore early only on failure, not success.
In particular, this bug was preventing the restore of fflags.
Diffstat (limited to 'lib')
-rw-r--r--lib/libarchive/archive_read_extract.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/libarchive/archive_read_extract.c b/lib/libarchive/archive_read_extract.c
index eb52e8e..9e851bb 100644
--- a/lib/libarchive/archive_read_extract.c
+++ b/lib/libarchive/archive_read_extract.c
@@ -1054,8 +1054,10 @@ set_perm(struct archive *a, int fd, struct archive_entry *entry,
*/
if (!S_ISLNK(archive_entry_mode(entry))) {
#ifdef HAVE_FCHMOD
- if (fd >= 0 && fchmod(fd, mode) == 0)
- return (ARCHIVE_OK);
+ if (fd >= 0 && fchmod(fd, mode) != 0) {
+ archive_set_error(a, errno, "Can't set permissions");
+ return (ARCHIVE_WARN);
+ }
#endif
if (chmod(name, mode) != 0) {
archive_set_error(a, errno, "Can't set permissions");
OpenPOWER on IntegriCloud