⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 04_resolved_issues.t

📁 source of perl for linux application,
💻 T
字号:
BEGIN {    if( $ENV{PERL_CORE} ) {        chdir '../lib/Archive/Tar' if -d '../lib/Archive/Tar';    }           use lib '../../..';}BEGIN { chdir 't' if -d 't' }use Test::More      'no_plan';use File::Basename  'basename';use strict;use lib '../lib';my $NO_UNLINK   = @ARGV ? 1 : 0;my $Class       = 'Archive::Tar';my $FileClass   = $Class . '::File';use_ok( $Class );use_ok( $FileClass );### bug #13636### tests for @longlink behaviour on files that have a / at the end### of their shortened path, making them appear to be directories{   ok( 1,                      "Testing bug 13636" );    ### dont use the prefix, otherwise A::T will not use @longlink    ### encoding style    local $Archive::Tar::DO_NOT_USE_PREFIX = 1;    local $Archive::Tar::DO_NOT_USE_PREFIX = 1;        my $dir =   'Catalyst-Helper-Controller-Scaffold-HTML-Template-0_03/' .                 'lib/Catalyst/Helper/Controller/Scaffold/HTML/';    my $file =  'Template.pm';    my $out =   $$ . '.tar';        ### first create the file    {   my $tar = $Class->new;                isa_ok( $tar, $Class,   "   Object" );        ok( $tar->add_data( $dir.$file => $$ ),                                "       Added long file" );                ok( $tar->write($out),  "       File written to $out" );    }        ### then read it back in    {   my $tar = $Class->new;        isa_ok( $tar, $Class,   "   Object" );        ok( $tar->read( $out ), "       Read in $out again" );                my @files = $tar->get_files;        is( scalar(@files), 1,  "       Only 1 entry found" );                my $entry = shift @files;        ok( $entry->is_file,    "       Entry is a file" );        is( $entry->name, $dir.$file,                                "       With the proper name" );    }                                        ### remove the file    unless( $NO_UNLINK ) { 1 while unlink $out }}    ### bug #14922### There's a bug in Archive::Tar that causes a file like: foo/foo.txt ### to be stored in the tar file as: foo/.txt### XXX could not be reproduced in 1.26 -- leave test to be sure{   ok( 1,                      "Testing bug 14922" );    my $dir     = $$ . '/';    my $file    = $$ . '.txt';    my $out     = $$ . '.tar';        ### first create the file    {   my $tar = $Class->new;                isa_ok( $tar, $Class,   "   Object" );        ok( $tar->add_data( $dir.$file => $$ ),                                "       Added long file" );                ok( $tar->write($out),  "       File written to $out" );    }    ### then read it back in    {   my $tar = $Class->new;        isa_ok( $tar, $Class,   "   Object" );        ok( $tar->read( $out ), "       Read in $out again" );                my @files = $tar->get_files;        is( scalar(@files), 1,  "       Only 1 entry found" );                my $entry = shift @files;        ok( $entry->is_file,    "       Entry is a file" );        is( $entry->full_path, $dir.$file,                                "       With the proper name" );    }                                        ### remove the file    unless( $NO_UNLINK ) { 1 while unlink $out }}        ### bug #30380: directory traversal vulnerability in Archive-Tar    ### Archive::Tar allowed files to be extracted to a dir outside### it's cwd(), effectively allowing you to overwrite any files### on the system, given the right permissions.{   ok( 1,                      "Testing bug 30880" );    my $tar = $Class->new;    isa_ok( $tar, $Class,       "   Object" );            ### absolute paths are already taken care of. Only relative paths    ### matter    my $in_file     = basename($0);    my $out_file    = '../' . $in_file . ".$$";        ok( $tar->add_files( $in_file ),                                 "       Added '$in_file'" );    ok( $tar->rename( $in_file, $out_file ),                                "       Renamed to '$out_file'" );        ### first, test with strict extract permissions onTODO:    {   local $Archive::Tar::INSECURE_EXTRACT_MODE = 0;        ### we quell the error on STDERR        local $Archive::Tar::WARN = 0;        local $Archive::Tar::WARN = 0;        ok( 1,                  "   Extracting in secure mode" );        ok( ! $tar->extract_file( $out_file ),                                "       File not extracted" );        ok( ! -e $out_file,     "       File '$out_file' does not exist" );            ok( $tar->error,        "       Error message stored" );        local $TODO = 'Exposed unrelated filespec handling bugs on VMS' if $^O eq 'VMS';        like( $tar->error, qr/attempting to leave/,                                "           Proper violation detected" );    }        ### now disable thoseTODO:    {   local $Archive::Tar::INSECURE_EXTRACT_MODE = 1;        ok( 1,                  "   Extracting in insecure mode" );            local $TODO = 'Exposed unrelated filespec handling bugs on VMS' if $^O eq 'VMS';        ok( $tar->extract_file( $out_file ),                                "       File extracted" );        ok( -e $out_file,       "       File '$out_file' exists" );                ### and clean up        unless( $NO_UNLINK ) { 1 while unlink $out_file };    }        }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -