On Tue, Oct 22, 2013 at 19:23:47 -0700, Paul Eggert wrote:
> There's a longstanding bug in GNU tar in that situation on Solaris,
> with a FIXME for it (there should be no reason to need absolute file
> names, even for incrementals), but the core dump shouldn't occur
Paul,
I noticed that the extrac09.at file's header still contains the
explanatory text left over from the listed03.at that you copied from.
Attached is a patch with my attempt to fill in the correct explanation.
Also, does it make sense to include a mention of "listed03.at" in the
FIXME paragraph, as proposed in the second patch?
Nathan
----------------------------------------------------------------------------
Nathan Stratton Treadway - [email protected] - Mid-Atlantic region
Ray Ontko & Co. - Software consulting services - http://www.ontko.com/
GPG Key: http://www.ontko.com/~nathanst/gpg_key.txt ID: 1023D/ECFB6239
Key fingerprint = 6AD8 485E 20B9 5C71 231C 0C32 15F3 ADCD ECFB 6239
diff --git a/tests/extrac09.at b/tests/extrac09.at
index bde656f..bff4508 100644
--- a/tests/extrac09.at
+++ b/tests/extrac09.at
@@ -18,10 +18,20 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# This checks for the --listed-incremental bug reported by J Chapman Flack at
-# http://lists.gnu.org/archive/html/bug-tar/2010-06/msg00000.html
-
-AT_SETUP([no need to save dir with unreadable . and ..])
+# This attempts to cause xgetcwd() to fail, and then checks to see if
+# such failure causes tar to abort even in a case where the results of
+# the call aren't actually needed.
+#
+# (xgetcwd() may fail e.g. on Solaris 10 when "." or ".." are unreadable.
+# On most systems xgetcwd() won't fail even in that situation, but
+# on those systems this test will simply succeed without actually testing
+# anything within tar.)
+#
+# http://lists.gnu.org/archive/html/bug-tar/2010-07/msg00045.html
+#
+# (See also listed03.at .)
+
+AT_SETUP([extracting even when save dir fails])
AT_KEYWORDS([extract extrac09])
AT_TAR_CHECK([
diff --git a/src/misc.c b/src/misc.c
index aecf438..8b8a606 100644
--- a/src/misc.c
+++ b/src/misc.c
@@ -288,7 +288,8 @@ normalize_filename (int cdidx, const char *name)
this following approach may lead to situations where the same
file or directory is processed twice under different absolute
paths without that duplication being detected. Perhaps we
- should use dev+ino pairs instead of names? */
+ should use dev+ino pairs instead of names? (See listed03.at for
+ a related test case.) */
const char *cdpath = tar_getcdpath (cdidx);
size_t copylen;
bool need_separator;