From d4fdeab4db0d0e699c8fbbb07f12c4e1f64d0f94 Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Mon, 16 May 2016 09:22:21 +0000 Subject: tar-1.29 --- tests/extrac06.at | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) create mode 100644 tests/extrac06.at (limited to 'tests/extrac06.at') diff --git a/tests/extrac06.at b/tests/extrac06.at new file mode 100644 index 0000000..68c460f --- /dev/null +++ b/tests/extrac06.at @@ -0,0 +1,73 @@ +# Process this file with autom4te to create testsuite. -*- Autotest -*- + +# Test suite for GNU tar. + +# Copyright 2006-2007, 2013-2014, 2016 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 . + +# The bug occurs when extracting from a tarfile a directory when the directory +# already exists and the version in the tarfile has more permissive +# permissions than your umask. In this case, the permissions of the +# existing directory will toggle between the version which complies with +# your umask (which would be correct, without -p) and the version from the +# tarfile. +# +# Reported by: Ian Jackson +# +# References: <17461.519.640947.664400@davenant.relativity.greenend.org.uk> +# + +AT_SETUP([mode of extracted directories]) +AT_KEYWORDS([extract extract06 directory mode]) + +AT_TAR_CHECK([ + +# Force umask +umask 022 + +# Make sure user's umask is honored, even if we are superuser +TAR_OPTIONS="$TAR_OPTIONS --no-same-permissions" + +# Create a directory +mkdir directory +chmod 777 directory +genfile --stat=mode:777 directory + +# Archive it +tar cf arc directory + +# Change its permissions ... +chmod 755 directory +genfile --stat=mode:777 directory + +# ... and attempt to restore it twice +tar xf arc directory --warning=no-timestamp +genfile --stat=mode:777 directory + +tar xf arc directory --warning=no-timestamp +genfile --stat=mode:777 directory + +# After both restores, the directory mode should be 755 +], +[0], +[777 +755 +755 +755 +]) + +AT_CLEANUP -- cgit v1.2.1