tar: -x -C symlink fix
* src/misc.c (chdir_do): Don't use O_NOFOLLOW when opening the argument to -C. This is for consistency with "tar -c -C FOO", and matches the new documentation. * tests/extrac14.at: New file. * tests/Makefile.am (TESTSUITE_AT): Add it. * tests/testsuite.at: Include it.
This commit is contained in:
@@ -736,7 +736,8 @@ chdir_do (int i)
|
||||
{
|
||||
if (! IS_ABSOLUTE_FILE_NAME (curr->name))
|
||||
chdir_do (i - 1);
|
||||
fd = openat (chdir_fd, curr->name, open_searchdir_flags);
|
||||
fd = openat (chdir_fd, curr->name,
|
||||
open_searchdir_flags & ~ O_NOFOLLOW);
|
||||
if (fd < 0)
|
||||
open_fatal (curr->name);
|
||||
|
||||
|
||||
@@ -80,6 +80,7 @@ TESTSUITE_AT = \
|
||||
extrac11.at\
|
||||
extrac12.at\
|
||||
extrac13.at\
|
||||
extrac14.at\
|
||||
filerem01.at\
|
||||
filerem02.at\
|
||||
gzip.at\
|
||||
|
||||
36
tests/extrac14.at
Normal file
36
tests/extrac14.at
Normal file
@@ -0,0 +1,36 @@
|
||||
# Process this file with autom4te to create testsuite. -*- Autotest -*-
|
||||
|
||||
# Test suite for GNU tar.
|
||||
# Copyright (C) 2010 Free Software Foundation, Inc.
|
||||
|
||||
# This program 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, or (at your option)
|
||||
# any later version.
|
||||
|
||||
# This program 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/>.
|
||||
|
||||
# written by Paul Eggert
|
||||
|
||||
# Check that 'tar -x -C FOO' follows FOO if FOO is a symbolic link.
|
||||
|
||||
AT_SETUP([extract -C symlink])
|
||||
AT_KEYWORDS([extract extrac14])
|
||||
|
||||
AT_TAR_CHECK([
|
||||
mkdir dest
|
||||
ln -s dest symlink
|
||||
echo foo >foo
|
||||
tar -cf archive.tar foo &&
|
||||
tar -xf archive.tar -C symlink &&
|
||||
cmp foo dest/foo
|
||||
],
|
||||
[0],[],[],[],[],[gnu])
|
||||
|
||||
AT_CLEANUP
|
||||
@@ -152,6 +152,7 @@ m4_include([extrac10.at])
|
||||
m4_include([extrac11.at])
|
||||
m4_include([extrac12.at])
|
||||
m4_include([extrac13.at])
|
||||
m4_include([extrac14.at])
|
||||
|
||||
m4_include([label01.at])
|
||||
m4_include([label02.at])
|
||||
|
||||
Reference in New Issue
Block a user