X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;ds=sidebyside;f=lib%2FBackupPC%2FCGI%2FRestoreFile.pm;h=e5b316a76c4ad1eed48d97be38f5a2362a09b89e;hb=c2b072c9ad558447fb73fedf0cad170214b7d80e;hp=52f3e90226a681eeec0e8ecd2e4da73b55a2a054;hpb=5c6a6cc4f333ce44a9df62ab828b0b9341579f7c;p=BackupPC.git diff --git a/lib/BackupPC/CGI/RestoreFile.pm b/lib/BackupPC/CGI/RestoreFile.pm index 52f3e90..e5b316a 100644 --- a/lib/BackupPC/CGI/RestoreFile.pm +++ b/lib/BackupPC/CGI/RestoreFile.pm @@ -28,7 +28,7 @@ # #======================================================================== # -# Version 2.1.0beta1, released 9 Apr 2004. +# Version 3.0.0, released 28 Jan 2007. # # See http://backuppc.sourceforge.net. # @@ -37,11 +37,13 @@ package BackupPC::CGI::RestoreFile; use strict; +use Encode; use BackupPC::CGI::Lib qw(:all); use BackupPC::FileZIO; use BackupPC::Attrib qw(:all); use BackupPC::View; + sub action { restoreFile($In{host}, $In{num}, $In{share}, $In{dir}); @@ -150,7 +152,8 @@ sub restoreFile my $view = BackupPC::View->new($bpc, $host, \@Backups); my $a = $view->fileAttrib($num, $share, $dir); if ( $dir =~ m{(^|/)\.\.(/|$)} || !defined($a) ) { - ErrorExit("Can't restore bad file ${EscHTML($dir)}"); + $dir = decode_utf8($dir); + ErrorExit("Can't restore bad file ${EscHTML($dir)} ($num, $share)"); } my $f = BackupPC::FileZIO->open($a->{fullPath}, 0, $a->{compress}); my $data; @@ -164,7 +167,6 @@ sub restoreFile } $f->close; $linkName =~ s/^\.\///; - my $share = $1 if ( $dir =~ /^\/?(.*?)\// ); restoreFile($host, $num, $share, $linkName, 1, $dir); return; }