Code

Properly handle '0' filenames in import-tars
authorShawn O. Pearce <spearce@spearce.org>
Tue, 8 May 2007 01:13:40 +0000 (21:13 -0400)
committerShawn O. Pearce <spearce@spearce.org>
Tue, 8 May 2007 01:13:40 +0000 (21:13 -0400)
Randal L. Schwartz pointed out multiple times that we should be
testing the length of the name string here, not if it is "true".
The problem is the string '0' is actually false in Perl when we
try to evaluate it in this context, as '0' is 0 numerically and
the number 0 is treated as a false value.  This would cause us
to break out of the import loop early if anyone had a file or
directory named "0".

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
contrib/fast-import/import-tars.perl

index e46492048c75f4a3cda11c3bf7ca03889640e7b7..f0b9a43abd469caa75d513b1f1a729714d1d899c 100755 (executable)
@@ -51,7 +51,7 @@ foreach my $tar_file (@ARGV)
                        $prefix) = unpack 'Z100 Z8 Z8 Z8 Z12 Z12
                        Z8 Z1 Z100 Z6
                        Z2 Z32 Z32 Z8 Z8 Z*', $_;
-               last unless $name;
+               last unless length($name);
                if ($name eq '././@LongLink') {
                        # GNU tar extension
                        if (read(I, $_, 512) != 512) {