$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);