diff --git a/var/www/html/files.php b/var/www/html/files.php
index 8771e85..b7174f7 100644
--- a/var/www/html/files.php
+++ b/var/www/html/files.php
@@ -15,7 +15,7 @@ if(empty($_SESSION['ftp_pass'])){
exit;
}
$ftp=ftp_connect('127.0.0.1') or die ('No Connection to FTP server!');
-if(!ftp_login($ftp, "$user[onion].onion", $_SESSION['ftp_pass'])){
+if(@!ftp_login($ftp, "$user[onion].onion", $_SESSION['ftp_pass'])){
send_login();
exit;
}
@@ -152,13 +152,22 @@ if(!empty($_POST['unzip']) && !empty($_POST['files'])){
}
$tmpfile='/tmp/'.uniqid().'.zip';
ftp_get($ftp, $tmpfile, $file, FTP_BINARY);
- $zip->open($tmpfile);
- $tmpdir='/tmp/'.uniqid().'/';
- mkdir($tmpdir);
- $zip->extractTo($tmpdir);
- ftp_recursive_upload($ftp, $tmpdir);
- rmdir($tmpdir);
- $zip->close();
+ //prevent zip-bombs
+ $size=0;
+ $resource=zip_open($tmpfile);
+ while($dir_resource=zip_read($resource)) {
+ $size+=zip_entry_filesize($dir_resource);
+ }
+ zip_close($resource);
+ if($size<=1073741824){ //1GB limit
+ $zip->open($tmpfile);
+ $tmpdir='/tmp/'.uniqid().'/';
+ mkdir($tmpdir);
+ $zip->extractTo($tmpdir);
+ ftp_recursive_upload($ftp, $tmpdir);
+ rmdir($tmpdir);
+ $zip->close();
+ }
unlink($tmpfile);
}
}