die if @ARGV != 2;
our ($test, $src_dir) = @ARGV;
+my ($msg_file) = tempfile ();
+select ($msg_file);
+
our (@prereq_tests) = ();
if ($test =~ /^(.*)-persistence$/) {
push (@prereq_tests, $1);
fail "Prerequisite test $prereq_test failed.\n" if $result[0] ne 'PASS';
}
-my ($msg_file) = tempfile ();
-select ($msg_file);
\f
# Generic testing.
$size = 0 if $typeflag eq '5';
# Store content.
+ $name =~ s%^(/|\./|\.\./)*%%; # Strip leading "/", "./", "../".
+ $name = '' if $name eq '.' || $name eq '..';
if (exists $content{$name}) {
fail "$archive: contains multiple entries for $name\n";
}
if ($typeflag eq '5') {
- $content{$name} = 'directory';
+ $content{$name} = 'directory' if $name ne '';
} else {
+ fail "$archive: contains file with empty name\n" if $name eq '';
my ($position) = sysseek (ARCHIVE, 0, SEEK_CUR);
$content{$name} = [$archive, $position, $size];
sysseek (ARCHIVE, int (($size + 511) / 512) * 512, SEEK_CUR);