mirror of
https://git.savannah.gnu.org/git/tar.git
synced 2026-09-19 22:54:15 +00:00
Fix bug with -x --xattr read-only files
Problem reported by Kevin Raymond in: https://bugzilla.redhat.com/show_bug.cgi?id=1886540 * src/extract.c (open_output_file): If we already created the empty file, do not open with O_EXCL, or with O_CREAT or O_TRUNC for that matter. Instead, use only O_NOFOLLOW to avoid some races. When estimating current mode, use openflag & O_EXCL rather than overwriting_old_files. (extract_file): Also invert S_IWUSR if it’s not set. * tests/xattr08.at: New test. * tests/Makefile.am, tests/testsuite.at: Add it.
This commit is contained in:
@@ -275,6 +275,7 @@ TESTSUITE_AT = \
|
||||
xattr05.at\
|
||||
xattr06.at\
|
||||
xattr07.at\
|
||||
xattr08.at\
|
||||
acls01.at\
|
||||
acls02.at\
|
||||
acls03.at\
|
||||
|
||||
@@ -502,6 +502,7 @@ m4_include([xattr04.at])
|
||||
m4_include([xattr05.at])
|
||||
m4_include([xattr06.at])
|
||||
m4_include([xattr07.at])
|
||||
m4_include([xattr08.at])
|
||||
|
||||
m4_include([acls01.at])
|
||||
m4_include([acls02.at])
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
# Process this file with autom4te to create testsuite. -*- Autotest -*-
|
||||
#
|
||||
# Test suite for GNU tar.
|
||||
# Copyright 2022 Free Software Foundation, Inc.
|
||||
|
||||
# This file is part of GNU tar.
|
||||
|
||||
# GNU tar is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
|
||||
# GNU tar is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
# Test description:
|
||||
# Test read-only files can be extracted with --xattr.
|
||||
# Per report:
|
||||
# https://lists.gnu.org/r/bug-tar/2020-10/msg00001.html
|
||||
|
||||
AT_SETUP([xattrs: xattrs and read-only files])
|
||||
AT_KEYWORDS([xattrs xattr08])
|
||||
|
||||
AT_TAR_CHECK([
|
||||
AT_XATTRS_PREREQ
|
||||
mkdir dir dir2
|
||||
genfile --file dir/file
|
||||
|
||||
setfattr -n user.test -v OurDirValue dir/file
|
||||
chmod a-w dir/file
|
||||
|
||||
tar --xattrs -C dir -cf archive.tar file
|
||||
tar --xattrs -C dir2 -xf archive.tar
|
||||
])
|
||||
|
||||
AT_CLEANUP
|
||||
Reference in New Issue
Block a user