[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Bug-tar] [PATCH] tar: -x -C symlink fix
From: |
Paul Eggert |
Subject: |
[Bug-tar] [PATCH] tar: -x -C symlink fix |
Date: |
Fri, 24 Sep 2010 13:15:15 -0700 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.12) Gecko/20100915 Thunderbird/3.0.8 |
* 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.
---
src/misc.c | 3 ++-
tests/Makefile.am | 1 +
tests/extrac14.at | 36 ++++++++++++++++++++++++++++++++++++
tests/testsuite.at | 1 +
4 files changed, 40 insertions(+), 1 deletions(-)
create mode 100644 tests/extrac14.at
diff --git a/src/misc.c b/src/misc.c
index 763c661..89a148b 100644
--- a/src/misc.c
+++ b/src/misc.c
@@ -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);
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 34be617..4bf3ff0 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -80,6 +80,7 @@ TESTSUITE_AT = \
extrac11.at\
extrac12.at\
extrac13.at\
+ extrac14.at\
filerem01.at\
filerem02.at\
gzip.at\
diff --git a/tests/extrac14.at b/tests/extrac14.at
new file mode 100644
index 0000000..1cfaa5c
--- /dev/null
+++ b/tests/extrac14.at
@@ -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
diff --git a/tests/testsuite.at b/tests/testsuite.at
index 8d76887..c047bd2 100644
--- a/tests/testsuite.at
+++ b/tests/testsuite.at
@@ -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])
--
1.7.2
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Bug-tar] [PATCH] tar: -x -C symlink fix,
Paul Eggert <=