Fix savannah bug #60002

Bug was introduced by commit 34d15af1.

* src/extract.c (prepare_to_extract): When extracting over pipe,
process only regular files.
* tests/extrac24.at: New test case.
* tests/Makefile.am: Add new test case.
* tests/testsuite.at: Likewise.
This commit is contained in:
Sergey Poznyakoff
2021-02-04 16:51:38 +02:00
parent d9d4435692
commit ee2ec5ff19
5 changed files with 50 additions and 1 deletions

1
po/.gitignore vendored
View File

@@ -1,3 +1,4 @@
/Makefile.in.in
/Makevars.template~
/Makefile.in.in~
*.gmo

View File

@@ -1708,7 +1708,12 @@ prepare_to_extract (char const *file_name, int typeflag, tar_extractor_t *fun)
extractor = extract_file;
}
if (!EXTRACT_OVER_PIPE)
if (EXTRACT_OVER_PIPE)
{
if (extractor != extract_file)
return false;
}
else
{
switch (old_files_option)
{

View File

@@ -122,6 +122,7 @@ TESTSUITE_AT = \
extrac21.at\
extrac22.at\
extrac23.at\
extrac24.at\
filerem01.at\
filerem02.at\
dirrem01.at\

41
tests/extrac24.at Normal file
View File

@@ -0,0 +1,41 @@
# Test suite for GNU tar. -*- autotest -*-
# Copyright 2021 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/>.
AT_SETUP([--to-stdout])
AT_KEYWORDS([extract extrac24 to-stdout])
# Description: When extracting over pipe, only regular files should be
# extracted. In tar 1.33 this was broken, so that members of other types
# (in particular, directories) were extracted as usual. This test ensures
# that this is no longer the case.
#
# References: https://bugs.archlinux.org/task/69373,
# https://savannah.gnu.org/bugs/?60002
AT_TAR_CHECK([
mkdir dir/
echo TEXT > dir/file
tar cf a.tar dir
rm -r dir
tar --extract --to-stdout --file a.tar
test -d dir
],
[1],
[TEXT
])
AT_CLEANUP

View File

@@ -344,6 +344,7 @@ m4_include([extrac20.at])
m4_include([extrac21.at])
m4_include([extrac22.at])
m4_include([extrac23.at])
m4_include([extrac24.at])
m4_include([backup01.at])