X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?p=pintos-anon;a=blobdiff_plain;f=src%2Ftests%2Ftests.pm;h=4599cb98fe49d7627173d182f48ce2ef072f03ab;hp=29e0707ed362a3fdbdb9116685ba8edf888ba8bd;hb=59f738d500f51ffc5f487344865b8bed69c26281;hpb=0fd3a243b790dd1cfc9e0a40c57dddde56cf344d diff --git a/src/tests/tests.pm b/src/tests/tests.pm index 29e0707..4599cb9 100644 --- a/src/tests/tests.pm +++ b/src/tests/tests.pm @@ -561,12 +561,15 @@ sub read_tar { $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);