- Keep 5_3 stub and creation files in sync with what I have in CVS HEAD

(MFB will likely be tomorrow now)
This commit is contained in:
Steph Fox 2008-05-18 20:52:34 +00:00
parent fbc29e2848
commit 53fd21de33
16 changed files with 70 additions and 67 deletions

View file

@ -114,15 +114,15 @@ class Extract_Phar
{ {
$fp = fopen(__FILE__, 'rb'); $fp = fopen(__FILE__, 'rb');
fseek($fp, self::LEN); fseek($fp, self::LEN);
$L = unpack('V', $a = fread($fp, 4)); $L = unpack('V', $a = (binary)fread($fp, 4));
$m = ''; $m = (binary)'';
do { do {
$read = 8192; $read = 8192;
if ($L[1] - strlen($m) < 8192) { if ($L[1] - strlen($m) < 8192) {
$read = $L[1] - strlen($m); $read = $L[1] - strlen($m);
} }
$last = fread($fp, $read); $last = (binary)fread($fp, $read);
$m .= $last; $m .= $last;
} while (strlen($last) && strlen($m) < $L[1]); } while (strlen($last) && strlen($m) < $L[1]);

View file

@ -24,10 +24,11 @@ static inline void phar_get_stub(const char *index_php, const char *web, size_t
static const char newstub1_0[] = "';\n\nif (in_array('phar', stream_get_wrappers()) && class_exists('Phar', 0)) {\nPhar::interceptFileFuncs();\nset_include_path('phar://' . __FILE__ . PATH_SEPARATOR . get_include_path());\nPhar::webPhar(null, $web);\ninclude 'phar://' . __FILE__ . '/' . Extract_Phar::START;\nreturn;\n}\n\nif (@(isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD']) && ($_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'POST'))) {\nExtract_Phar::go(true);\n$mimes = array(\n'phps' => 2,\n'c' => 'text/plain',\n'cc' => 'text/plain',\n'cpp' => 'text/plain',\n'c++' => 'text/plain',\n'dtd' => 'text/plain',\n'h' => 'text/plain',\n'log' => 'text/plain',\n'rng' => 'text/plain',\n'txt' => 'text/plain',\n'xsd' => 'text/plain',\n'php' => 1,\n'inc' => 1,\n'avi' => 'video/avi',\n'bmp' => 'image/bmp',\n'css' => 'text/css',\n'gif' => 'image/gif',\n'htm' => 'text/html',\n'html' => 'text/html',\n'htmls' => 'text/html',\n'ico' => 'image/x-ico',\n'jpe' => 'image/jpeg',\n'jpg' => 'image/jpeg',\n'jpeg' => 'image/jpeg',\n'js' => 'application/x-javascript',\n'midi' => 'audio/midi',\n'mid' => 'audio/midi',\n'mod' => 'audio/mod',\n'mov' => 'movie/quicktime',\n'mp3' => 'audio/mp3',\n'mpg' => 'video/mpeg',\n'mpeg' => 'video/mpeg',\n'pdf' => 'application/pdf',\n'png' => 'image/png',\n'swf' => 'application/shockwave-flash',\n'tif' => 'image/tiff',\n'tiff' => 'image/tiff',\n'wav' => 'audio/wav',\n'xbm' => 'image/xbm',\n'xml' => 'text/xml',\n);\n\nheader(\"Cache-Control: no-cache, must-revalidate\");\nheader(\"Pragma: no-cache\");\n\n$basename = basename(__FILE__);\nif (!strpos($_SERVER['REQUEST_URI'], $basename)) {\nchdir(Extract_Phar::$temp);\ninclude $web;\nreturn;\n}\n$pt = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], $basename) + strlen($basename));\nif (!$pt || $pt == '/') {\n$pt = $web;\nheader('HTTP/1.1 301 Moved Permanently');\nheader('Location: ' . $_SERVER['REQUEST_URI'] . '/' . $pt);\nexit;\n}\n$a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt);\nif (!$a || strlen(dirname($a)) < strlen("; static const char newstub1_0[] = "';\n\nif (in_array('phar', stream_get_wrappers()) && class_exists('Phar', 0)) {\nPhar::interceptFileFuncs();\nset_include_path('phar://' . __FILE__ . PATH_SEPARATOR . get_include_path());\nPhar::webPhar(null, $web);\ninclude 'phar://' . __FILE__ . '/' . Extract_Phar::START;\nreturn;\n}\n\nif (@(isset($_SERVER['REQUEST_URI']) && isset($_SERVER['REQUEST_METHOD']) && ($_SERVER['REQUEST_METHOD'] == 'GET' || $_SERVER['REQUEST_METHOD'] == 'POST'))) {\nExtract_Phar::go(true);\n$mimes = array(\n'phps' => 2,\n'c' => 'text/plain',\n'cc' => 'text/plain',\n'cpp' => 'text/plain',\n'c++' => 'text/plain',\n'dtd' => 'text/plain',\n'h' => 'text/plain',\n'log' => 'text/plain',\n'rng' => 'text/plain',\n'txt' => 'text/plain',\n'xsd' => 'text/plain',\n'php' => 1,\n'inc' => 1,\n'avi' => 'video/avi',\n'bmp' => 'image/bmp',\n'css' => 'text/css',\n'gif' => 'image/gif',\n'htm' => 'text/html',\n'html' => 'text/html',\n'htmls' => 'text/html',\n'ico' => 'image/x-ico',\n'jpe' => 'image/jpeg',\n'jpg' => 'image/jpeg',\n'jpeg' => 'image/jpeg',\n'js' => 'application/x-javascript',\n'midi' => 'audio/midi',\n'mid' => 'audio/midi',\n'mod' => 'audio/mod',\n'mov' => 'movie/quicktime',\n'mp3' => 'audio/mp3',\n'mpg' => 'video/mpeg',\n'mpeg' => 'video/mpeg',\n'pdf' => 'application/pdf',\n'png' => 'image/png',\n'swf' => 'application/shockwave-flash',\n'tif' => 'image/tiff',\n'tiff' => 'image/tiff',\n'wav' => 'audio/wav',\n'xbm' => 'image/xbm',\n'xml' => 'text/xml',\n);\n\nheader(\"Cache-Control: no-cache, must-revalidate\");\nheader(\"Pragma: no-cache\");\n\n$basename = basename(__FILE__);\nif (!strpos($_SERVER['REQUEST_URI'], $basename)) {\nchdir(Extract_Phar::$temp);\ninclude $web;\nreturn;\n}\n$pt = substr($_SERVER['REQUEST_URI'], strpos($_SERVER['REQUEST_URI'], $basename) + strlen($basename));\nif (!$pt || $pt == '/') {\n$pt = $web;\nheader('HTTP/1.1 301 Moved Permanently');\nheader('Location: ' . $_SERVER['REQUEST_URI'] . '/' . $pt);\nexit;\n}\n$a = realpath(Extract_Phar::$temp . DIRECTORY_SEPARATOR . $pt);\nif (!$a || strlen(dirname($a)) < strlen(";
static const char newstub1_1[] = "Extract_Phar::$temp)) {\nheader('HTTP/1.0 404 Not Found');\necho \"<html>\\n <head>\\n <title>File Not Found<title>\\n </head>\\n <body>\\n <h1>404 - File \", $pt, \" Not Found</h1>\\n </body>\\n</html>\";\nexit;\n}\n$b = pathinfo($a);\nif (!isset($b['extension'])) {\nheader('Content-Type: text/plain');\nheader('Content-Length: ' . filesize($a));\nreadfile($a);\nexit;\n}\nif (isset($mimes[$b['extension']])) {\nif ($mimes[$b['extension']] === 1) {\ninclude $a;\nexit;\n}\nif ($mimes[$b['extension']] === 2) {\nhighlight_file($a);\nexit;\n}\nheader('Content-Type: ' .$mimes[$b['extension']]);\nheader('Content-Length: ' . filesize($a));\nreadfile($a);\nexit;\n}\n}\n\nclass Extract_Phar\n{\nstatic $temp;\nstatic $origdir;\nconst GZ = 0x1000;\nconst BZ2 = 0x2000;\nconst MASK = 0x3000;\nconst START = '"; static const char newstub1_1[] = "Extract_Phar::$temp)) {\nheader('HTTP/1.0 404 Not Found');\necho \"<html>\\n <head>\\n <title>File Not Found<title>\\n </head>\\n <body>\\n <h1>404 - File \", $pt, \" Not Found</h1>\\n </body>\\n</html>\";\nexit;\n}\n$b = pathinfo($a);\nif (!isset($b['extension'])) {\nheader('Content-Type: text/plain');\nheader('Content-Length: ' . filesize($a));\nreadfile($a);\nexit;\n}\nif (isset($mimes[$b['extension']])) {\nif ($mimes[$b['extension']] === 1) {\ninclude $a;\nexit;\n}\nif ($mimes[$b['extension']] === 2) {\nhighlight_file($a);\nexit;\n}\nheader('Content-Type: ' .$mimes[$b['extension']]);\nheader('Content-Length: ' . filesize($a));\nreadfile($a);\nexit;\n}\n}\n\nclass Extract_Phar\n{\nstatic $temp;\nstatic $origdir;\nconst GZ = 0x1000;\nconst BZ2 = 0x2000;\nconst MASK = 0x3000;\nconst START = '";
static const char newstub2[] = "';\nconst LEN = "; static const char newstub2[] = "';\nconst LEN = ";
static const char newstub3_0[] = ";\n\nstatic function go($return = false)\n{\n$fp = fopen(__FILE__, 'rb');\nfseek($fp, self::LEN);\n$L = unpack('V', $a = fread($fp, 4));\n$m = '';\n\ndo {\n$read = 8192;\nif ($L[1] - strlen($m) < 8192) {\n$read = $L[1] - strlen($m);\n}\n$last = fread($fp, $read);\n$m .= $last;\n} while (strlen($last) && strlen($m) < $L[1]);\n\nif (strlen($m) < $L[1]) {\ndie('ERROR: manifest length read was \"' .\nstrlen($m) .'\" should be \"' .\n$L[1] . '\"');\n}\n\n$info = self::_unpack($m);\n$f = $info['c'];\n\nif ($f & self::GZ) {\nif (!function_exists('gzinflate')) {\ndie('Error: zlib extension is not enabled -' .\n' gzinflate() function needed for zlib-compressed .phars');\n}\n}\n\nif ($f & self::BZ2) {\nif (!function_exists('bzdecompress')) {\ndie('Error: bzip2 extension is not enabled -' .\n' bzdecompress() function needed for bz2-compressed .phars');\n}\n}\n\n$temp = self::tmpdir();\n\nif (!$temp || !is_writable($temp)) {\n$sessionpath = session_save_path();\nif (strpos ($sessionpath, \";\") !== false)\n$sessionpath = substr ($sessionpath, strpos ($sessionpath, \";\")+1);\nif (!file_exists($sessionpath) || !is_dir($sessionpath)) {\ndie('Could not locate temporary directory to extract phar');\n}\n$temp = $sessionpath;\n}\n\n$temp .= '/pharextract/'.basename(__FILE__, '.phar');\nself::$temp = $temp;\nself::$origdir = getcwd();\n@mkdir($temp, 0777, true);\n$temp = realpath($temp);\n\nif (!file_exists($temp . DIRECTORY_SEPARATOR . md5_file(__FILE__))) {\nself::_removeTmpFiles($temp, getcwd());\n@mkdir($temp, 0777, true);\n@file_put_contents($temp . '/' . md5_file(__FILE__), '');\n\nforeach ($info['m'] as $path => $file) {\n$a = !file_exists(dirname($temp . '/' . $path));\n@mkdir(dirname($temp . '/' . $path), 0777, true);\nclearstatcache();\n\nif ($path[strlen($path) - 1] == '/') {\n@mkdir($temp . '/' . $path, 0777);\n} else {\nfile_put_contents($temp . '/' . $path, self::extractFile($path, $file, $fp));\n@chmod($temp . '/' . $path, 0666);\n}\n}\n}\n\nchdir($temp);\n\nif (!$return) {\ninclude self::START;\n}\n}\n\nstatic fun"; static const char newstub3_0[] = ";\n\nstatic function go($return = false)\n{\n$fp = fopen(__FILE__, 'rb');\nfseek($fp, self::LEN);\n$L = unpack('V', $a = (binary)fread($fp, 4));\n$m = (binary)'';\n\ndo {\n$read = 8192;\nif ($L[1] - strlen($m) < 8192) {\n$read = $L[1] - strlen($m);\n}\n$last = (binary)fread($fp, $read);\n$m .= $last;\n} while (strlen($last) && strlen($m) < $L[1]);\n\nif (strlen($m) < $L[1]) {\ndie('ERROR: manifest length read was \"' .\nstrlen($m) .'\" should be \"' .\n$L[1] . '\"');\n}\n\n$info = self::_unpack($m);\n$f = $info['c'];\n\nif ($f & self::GZ) {\nif (!function_exists('gzinflate')) {\ndie('Error: zlib extension is not enabled -' .\n' gzinflate() function needed for zlib-compressed .phars');\n}\n}\n\nif ($f & self::BZ2) {\nif (!function_exists('bzdecompress')) {\ndie('Error: bzip2 extension is not enabled -' .\n' bzdecompress() function needed for bz2-compressed .phars');\n}\n}\n\n$temp = self::tmpdir();\n\nif (!$temp || !is_writable($temp)) {\n$sessionpath = session_save_path();\nif (strpos ($sessionpath, \";\") !== false)\n$sessionpath = substr ($sessionpath, strpos ($sessionpath, \";\")+1);\nif (!file_exists($sessionpath) || !is_dir($sessionpath)) {\ndie('Could not locate temporary directory to extract phar');\n}\n$temp = $sessionpath;\n}\n\n$temp .= '/pharextract/'.basename(__FILE__, '.phar');\nself::$temp = $temp;\nself::$origdir = getcwd();\n@mkdir($temp, 0777, true);\n$temp = realpath($temp);\n\nif (!file_exists($temp . DIRECTORY_SEPARATOR . md5_file(__FILE__))) {\nself::_removeTmpFiles($temp, getcwd());\n@mkdir($temp, 0777, true);\n@file_put_contents($temp . '/' . md5_file(__FILE__), '');\n\nforeach ($info['m'] as $path => $file) {\n$a = !file_exists(dirname($temp . '/' . $path));\n@mkdir(dirname($temp . '/' . $path), 0777, true);\nclearstatcache();\n\nif ($path[strlen($path) - 1] == '/') {\n@mkdir($temp . '/' . $path, 0777);\n} else {\nfile_put_contents($temp . '/' . $path, self::extractFile($path, $file, $fp));\n@chmod($temp . '/' . $path, 0666);\n}\n}\n}\n\nchdir($temp);\n\nif (!$return) {\ninclude self::ST";
static const char newstub3_1[] = "ction tmpdir()\n{\nif (strpos(PHP_OS, 'WIN') !== false) {\nif ($var = getenv('TMP') ? getenv('TMP') : getenv('TEMP')) {\nreturn $var;\n}\nif (is_dir('/temp') || mkdir('/temp')) {\nreturn realpath('/temp');\n}\nreturn false;\n}\nif ($var = getenv('TMPDIR')) {\nreturn $var;\n}\nreturn realpath('/tmp');\n}\n\nstatic function _unpack($m)\n{\n$info = unpack('V', substr($m, 0, 4));\n $l = unpack('V', substr($m, 10, 4));\n$m = substr($m, 14 + $l[1]);\n$s = unpack('V', substr($m, 0, 4));\n$o = 0;\n$start = 4 + $s[1];\n$ret['c'] = 0;\n\nfor ($i = 0; $i < $info[1]; $i++) {\n $len = unpack('V', substr($m, $start, 4));\n$start += 4;\n $savepath = substr($m, $start, $len[1]);\n$start += $len[1];\n $ret['m'][$savepath] = array_values(unpack('Va/Vb/Vc/Vd/Ve/Vf', substr($m, $start, 24)));\n$ret['m'][$savepath][3] = sprintf('%u', $ret['m'][$savepath][3]\n& 0xffffffff);\n$ret['m'][$savepath][7] = $o;\n$o += $ret['m'][$savepath][2];\n$start += 24 + $ret['m'][$savepath][5];\n$ret['c'] |= $ret['m'][$savepath][4] & self::MASK;\n}\nreturn $ret;\n}\n\nstatic function extractFile($path, $entry, $fp)\n{\n$data = '';\n$c = $entry[2];\n\nwhile ($c) {\nif ($c < 8192) {\n$data .= @fread($fp, $c);\n$c = 0;\n} else {\n$c -= 8192;\n$data .= @fread($fp, 8192);\n}\n}\n\nif ($entry[4] & self::GZ) {\n$data = gzinflate($data);\n} elseif ($entry[4] & self::BZ2) {\n$data = bzdecompress($data);\n}\n\nif (strlen($data) != $entry[0]) {\ndie(\"Invalid internal .phar file (size error \" . strlen($data) . \" != \" .\n$stat[7] . \")\");\n}\n\nif ($entry[3] != sprintf(\"%u\", crc32((binary)$data) & 0xffffffff)) {\ndie(\"Invalid internal .phar file (checksum error)\");\n}\n\nreturn $data;\n}\n\nstatic function _removeTmpFiles($temp, $origdir)\n{\nchdir($temp);\n\nforeach (glob('*') as $f) {\nif (file_exists($f)) {\nis_dir($f) ? @rmdir($f) : @unlink($f);\nif (file_exists($f) && is_dir($f)) {\nself::_removeTmpFiles($f, getcwd());\n}\n}\n}\n\n@rmdir($temp);\nclearstatcache();\nchdir($origdir);\n}\n}\n\nExtract_Phar::go();\n__HALT_COMPILER(); ?>"; static const char newstub3_1[] = "ART;\n}\n}\n\nstatic function tmpdir()\n{\nif (strpos(PHP_OS, 'WIN') !== false) {\nif ($var = getenv('TMP') ? getenv('TMP') : getenv('TEMP')) {\nreturn $var;\n}\nif (is_dir('/temp') || mkdir('/temp')) {\nreturn realpath('/temp');\n}\nreturn false;\n}\nif ($var = getenv('TMPDIR')) {\nreturn $var;\n}\nreturn realpath('/tmp');\n}\n\nstatic function _unpack($m)\n{\n$info = unpack('V', substr($m, 0, 4));\n $l = unpack('V', substr($m, 10, 4));\n$m = substr($m, 14 + $l[1]);\n$s = unpack('V', substr($m, 0, 4));\n$o = 0;\n$start = 4 + $s[1];\n$ret['c'] = 0;\n\nfor ($i = 0; $i < $info[1]; $i++) {\n $len = unpack('V', substr($m, $start, 4));\n$start += 4;\n $savepath = substr($m, $start, $len[1]);\n$start += $len[1];\n $ret['m'][$savepath] = array_values(unpack('Va/Vb/Vc/Vd/Ve/Vf', substr($m, $start, 24)));\n$ret['m'][$savepath][3] = sprintf('%u', $ret['m'][$savepath][3]\n& 0xffffffff);\n$ret['m'][$savepath][7] = $o;\n$o += $ret['m'][$savepath][2];\n$start += 24 + $ret['m'][$savepath][5];\n$ret['c'] |= $ret['m'][$savepath][4] & self::MASK;\n}\nreturn $ret;\n}\n\nstatic function extractFile($path, $entry, $fp)\n{\n$data = '';\n$c = $entry[2];\n\nwhile ($c) {\nif ($c < 8192) {\n$data .= @fread($fp, $c);\n$c = 0;\n} else {\n$c -= 8192;\n$data .= @fread($fp, 8192);\n}\n}\n\nif ($entry[4] & self::GZ) {\n$data = gzinflate($data);\n} elseif ($entry[4] & self::BZ2) {\n$data = bzdecompress($data);\n}\n\nif (strlen($data) != $entry[0]) {\ndie(\"Invalid internal .phar file (size error \" . strlen($data) . \" != \" .\n$stat[7] . \")\");\n}\n\nif ($entry[3] != sprintf(\"%u\", crc32((binary)$data) & 0xffffffff)) {\ndie(\"Invalid internal .phar file (checksum error)\");\n}\n\nreturn $data;\n}\n\nstatic function _removeTmpFiles($temp, $origdir)\n{\nchdir($temp);\n\nforeach (glob('*') as $f) {\nif (file_exists($f)) {\nis_dir($f) ? @rmdir($f) : @unlink($f);\nif (file_exists($f) && is_dir($f)) {\nself::_removeTmpFiles($f, getcwd());\n}\n}\n}\n\n@rmdir($temp);\nclearstatcache();\nchdir($origdir);\n}\n}\n\nExtract_Phar::go();\n__HALT_COMPIL";
static const char newstub3_2[] = "ER(); ?>";
static const int newstub_len = 6641; static const int newstub_len = 6665;
*len = spprintf(stub, name_len + web_len + newstub_len, "%s%s%s%s%s%s%d%s%s", newstub0, web, newstub1_0, newstub1_1, index_php, newstub2, name_len + web_len + newstub_len, newstub3_0, newstub3_1); *len = spprintf(stub, name_len + web_len + newstub_len, "%s%s%s%s%s%s%d%s%s%s", newstub0, web, newstub1_0, newstub1_1, index_php, newstub2, name_len + web_len + newstub_len, newstub3_0, newstub3_1, newstub3_2);
} }

Binary file not shown.

View file

@ -4,7 +4,7 @@ if (function_exists('date_default_timezone_set')) {
date_default_timezone_set('UTC'); date_default_timezone_set('UTC');
} }
$manifest = ''; $manifest = (binary)'';
$glags = 0; $glags = 0;
foreach($files as $name => $cont) foreach($files as $name => $cont)
@ -40,8 +40,8 @@ foreach($files as $name => $cont)
if (isset($meta)) $meta = serialize($meta); if (isset($meta)) $meta = serialize($meta);
// write manifest entry // write manifest entry
$manifest .= pack('V', strlen($name)) . $name; $manifest .= pack('V', strlen($name)) . (binary)$name;
$manifest .= pack('VVVVVV', $ulen, $time, $clen, $crc32, $flags|$perm, strlen($meta)) . $meta; $manifest .= pack('VVVVVV', $ulen, $time, $clen, $crc32, $flags|$perm, strlen($meta)) . (binary)$meta;
// globals // globals
$gflags |= $flags; $gflags |= $flags;
@ -51,12 +51,14 @@ foreach($files as $name => $cont)
if (!isset($alias)) $alias = 'hio'; if (!isset($alias)) $alias = 'hio';
if (isset($pmeta)) $pmeta = serialize($pmeta); else $pmeta = ''; if (isset($pmeta)) $pmeta = serialize($pmeta); else $pmeta = '';
$manifest = pack('VnVV', count($files), isset($hasdir) ? 0x1110 : 0x1000, $gflags, strlen($alias)) . $alias . pack('V', strlen($pmeta)) . $pmeta . $manifest;
$manifest = pack('VnVV', count($files), isset($hasdir) ? 0x1110 : 0x1000, $gflags, strlen($alias)) . (binary)$alias . pack('V', strlen($pmeta)) . (binary)$pmeta . $manifest;
$file = (binary)$file;
$file .= pack('V', strlen($manifest)) . $manifest; $file .= pack('V', strlen($manifest)) . $manifest;
foreach($files as $cont) foreach($files as $cont)
{ {
$file .= $cont; $file .= (binary)$cont;
} }
file_put_contents($fname, $file); file_put_contents($fname, $file);

View file

@ -29,7 +29,7 @@ unlink(dirname(__FILE__) . '/brandnewphar.phar');
__HALT_COMPILER(); __HALT_COMPILER();
?> ?>
--EXPECT-- --EXPECT--
int(6659) int(6683)
string(200) "<?php string(200) "<?php
function __autoload($class) function __autoload($class)
{ {

View file

@ -123,7 +123,7 @@ NULL
bool(true) bool(true)
bool(false) bool(false)
bool(false) bool(false)
int(6659) int(6683)
NULL NULL
================= convertToZip() ===================== ================= convertToZip() =====================
bool(false) bool(false)

View file

@ -32,7 +32,7 @@ __HALT_COMPILER();
unlink(dirname(__FILE__) . '/brandnewphar.phar'); unlink(dirname(__FILE__) . '/brandnewphar.phar');
?> ?>
--EXPECT-- --EXPECT--
int(6659) int(6683)
string(200) "<?php string(200) "<?php
function __autoload($class) function __autoload($class)
{ {

View file

@ -34,7 +34,7 @@ echo $e->getMessage() . "\n";
?> ?>
===DONE=== ===DONE===
--EXPECT-- --EXPECT--
string(6659) "<?php string(6683) "<?php
$web = 'index.php'; $web = 'index.php';
@ -144,21 +144,21 @@ const GZ = 0x1000;
const BZ2 = 0x2000; const BZ2 = 0x2000;
const MASK = 0x3000; const MASK = 0x3000;
const START = 'index.php'; const START = 'index.php';
const LEN = 6661; const LEN = 6685;
static function go($return = false) static function go($return = false)
{ {
$fp = fopen(__FILE__, 'rb'); $fp = fopen(__FILE__, 'rb');
fseek($fp, self::LEN); fseek($fp, self::LEN);
$L = unpack('V', $a = fread($fp, 4)); $L = unpack('V', $a = (binary)fread($fp, 4));
$m = ''; $m = (binary)'';
do { do {
$read = 8192; $read = 8192;
if ($L[1] - strlen($m) < 8192) { if ($L[1] - strlen($m) < 8192) {
$read = $L[1] - strlen($m); $read = $L[1] - strlen($m);
} }
$last = fread($fp, $read); $last = (binary)fread($fp, $read);
$m .= $last; $m .= $last;
} while (strlen($last) && strlen($m) < $L[1]); } while (strlen($last) && strlen($m) < $L[1]);
@ -328,7 +328,7 @@ Extract_Phar::go();
__HALT_COMPILER(); ?>" __HALT_COMPILER(); ?>"
============================================================================ ============================================================================
============================================================================ ============================================================================
string(6670) "<?php string(6694) "<?php
$web = 'index.php'; $web = 'index.php';
@ -438,21 +438,21 @@ const GZ = 0x1000;
const BZ2 = 0x2000; const BZ2 = 0x2000;
const MASK = 0x3000; const MASK = 0x3000;
const START = 'my/custom/thingy.php'; const START = 'my/custom/thingy.php';
const LEN = 6672; const LEN = 6696;
static function go($return = false) static function go($return = false)
{ {
$fp = fopen(__FILE__, 'rb'); $fp = fopen(__FILE__, 'rb');
fseek($fp, self::LEN); fseek($fp, self::LEN);
$L = unpack('V', $a = fread($fp, 4)); $L = unpack('V', $a = (binary)fread($fp, 4));
$m = ''; $m = (binary)'';
do { do {
$read = 8192; $read = 8192;
if ($L[1] - strlen($m) < 8192) { if ($L[1] - strlen($m) < 8192) {
$read = $L[1] - strlen($m); $read = $L[1] - strlen($m);
} }
$last = fread($fp, $read); $last = (binary)fread($fp, $read);
$m .= $last; $m .= $last;
} while (strlen($last) && strlen($m) < $L[1]); } while (strlen($last) && strlen($m) < $L[1]);
@ -622,7 +622,7 @@ Extract_Phar::go();
__HALT_COMPILER(); ?>" __HALT_COMPILER(); ?>"
============================================================================ ============================================================================
============================================================================ ============================================================================
int(7050) int(7074)
============================================================================ ============================================================================
============================================================================ ============================================================================
Illegal filename passed in for stub creation, was 401 characters long, and only 400 or less is allowed Illegal filename passed in for stub creation, was 401 characters long, and only 400 or less is allowed
@ -630,7 +630,7 @@ Illegal filename passed in for stub creation, was 401 characters long, and only
============================================================================ ============================================================================
============================================================================ ============================================================================
============================================================================ ============================================================================
string(6672) "<?php string(6696) "<?php
$web = 'the/web.php'; $web = 'the/web.php';
@ -740,21 +740,21 @@ const GZ = 0x1000;
const BZ2 = 0x2000; const BZ2 = 0x2000;
const MASK = 0x3000; const MASK = 0x3000;
const START = 'my/custom/thingy.php'; const START = 'my/custom/thingy.php';
const LEN = 6674; const LEN = 6698;
static function go($return = false) static function go($return = false)
{ {
$fp = fopen(__FILE__, 'rb'); $fp = fopen(__FILE__, 'rb');
fseek($fp, self::LEN); fseek($fp, self::LEN);
$L = unpack('V', $a = fread($fp, 4)); $L = unpack('V', $a = (binary)fread($fp, 4));
$m = ''; $m = (binary)'';
do { do {
$read = 8192; $read = 8192;
if ($L[1] - strlen($m) < 8192) { if ($L[1] - strlen($m) < 8192) {
$read = $L[1] - strlen($m); $read = $L[1] - strlen($m);
} }
$last = fread($fp, $read); $last = (binary)fread($fp, $read);
$m .= $last; $m .= $last;
} while (strlen($last) && strlen($m) < $L[1]); } while (strlen($last) && strlen($m) < $L[1]);
@ -924,6 +924,6 @@ Extract_Phar::go();
__HALT_COMPILER(); ?>" __HALT_COMPILER(); ?>"
============================================================================ ============================================================================
============================================================================ ============================================================================
int(7050) int(7074)
Illegal web filename passed in for stub creation, was 401 characters long, and only 400 or less is allowed Illegal web filename passed in for stub creation, was 401 characters long, and only 400 or less is allowed
===DONE=== ===DONE===

View file

@ -70,8 +70,8 @@ var_dump($phar->getAlias());
Entry .phar/stub.php does not exist Entry .phar/stub.php does not exist
Entry .phar/alias.txt does not exist Entry .phar/alias.txt does not exist
Cannot set stub ".phar/stub.php" directly in phar "%sphar_offset_check.phar.php", use setStub Cannot set stub ".phar/stub.php" directly in phar "%sphar_offset_check.phar.php", use setStub
int(6661) int(6685)
int(6661) int(6685)
Cannot set alias ".phar/alias.txt" directly in phar "%sphar_offset_check.phar.php", use setAlias Cannot set alias ".phar/alias.txt" directly in phar "%sphar_offset_check.phar.php", use setAlias
string(5) "susan" string(5) "susan"
string(5) "susan" string(5) "susan"

View file

@ -54,7 +54,7 @@ try {
unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar'); unlink(dirname(__FILE__) . '/' . basename(__FILE__, '.clean.php') . '.phar');
?> ?>
--EXPECT-- --EXPECT--
string(6661) "<?php string(6685) "<?php
$web = 'index.php'; $web = 'index.php';
@ -164,21 +164,21 @@ const GZ = 0x1000;
const BZ2 = 0x2000; const BZ2 = 0x2000;
const MASK = 0x3000; const MASK = 0x3000;
const START = 'index.php'; const START = 'index.php';
const LEN = 6661; const LEN = 6685;
static function go($return = false) static function go($return = false)
{ {
$fp = fopen(__FILE__, 'rb'); $fp = fopen(__FILE__, 'rb');
fseek($fp, self::LEN); fseek($fp, self::LEN);
$L = unpack('V', $a = fread($fp, 4)); $L = unpack('V', $a = (binary)fread($fp, 4));
$m = ''; $m = (binary)'';
do { do {
$read = 8192; $read = 8192;
if ($L[1] - strlen($m) < 8192) { if ($L[1] - strlen($m) < 8192) {
$read = $L[1] - strlen($m); $read = $L[1] - strlen($m);
} }
$last = fread($fp, $read); $last = (binary)fread($fp, $read);
$m .= $last; $m .= $last;
} while (strlen($last) && strlen($m) < $L[1]); } while (strlen($last) && strlen($m) < $L[1]);
@ -349,7 +349,7 @@ __HALT_COMPILER(); ?>
" "
============================================================================ ============================================================================
============================================================================ ============================================================================
string(6672) "<?php string(6696) "<?php
$web = 'index.php'; $web = 'index.php';
@ -459,21 +459,21 @@ const GZ = 0x1000;
const BZ2 = 0x2000; const BZ2 = 0x2000;
const MASK = 0x3000; const MASK = 0x3000;
const START = 'my/custom/thingy.php'; const START = 'my/custom/thingy.php';
const LEN = 6672; const LEN = 6696;
static function go($return = false) static function go($return = false)
{ {
$fp = fopen(__FILE__, 'rb'); $fp = fopen(__FILE__, 'rb');
fseek($fp, self::LEN); fseek($fp, self::LEN);
$L = unpack('V', $a = fread($fp, 4)); $L = unpack('V', $a = (binary)fread($fp, 4));
$m = ''; $m = (binary)'';
do { do {
$read = 8192; $read = 8192;
if ($L[1] - strlen($m) < 8192) { if ($L[1] - strlen($m) < 8192) {
$read = $L[1] - strlen($m); $read = $L[1] - strlen($m);
} }
$last = fread($fp, $read); $last = (binary)fread($fp, $read);
$m .= $last; $m .= $last;
} while (strlen($last) && strlen($m) < $L[1]); } while (strlen($last) && strlen($m) < $L[1]);
@ -644,7 +644,7 @@ __HALT_COMPILER(); ?>
" "
============================================================================ ============================================================================
============================================================================ ============================================================================
string(6674) "<?php string(6698) "<?php
$web = 'the/web.php'; $web = 'the/web.php';
@ -754,21 +754,21 @@ const GZ = 0x1000;
const BZ2 = 0x2000; const BZ2 = 0x2000;
const MASK = 0x3000; const MASK = 0x3000;
const START = 'my/custom/thingy.php'; const START = 'my/custom/thingy.php';
const LEN = 6674; const LEN = 6698;
static function go($return = false) static function go($return = false)
{ {
$fp = fopen(__FILE__, 'rb'); $fp = fopen(__FILE__, 'rb');
fseek($fp, self::LEN); fseek($fp, self::LEN);
$L = unpack('V', $a = fread($fp, 4)); $L = unpack('V', $a = (binary)fread($fp, 4));
$m = ''; $m = (binary)'';
do { do {
$read = 8192; $read = 8192;
if ($L[1] - strlen($m) < 8192) { if ($L[1] - strlen($m) < 8192) {
$read = $L[1] - strlen($m); $read = $L[1] - strlen($m);
} }
$last = fread($fp, $read); $last = (binary)fread($fp, $read);
$m .= $last; $m .= $last;
} while (strlen($last) && strlen($m) < $L[1]); } while (strlen($last) && strlen($m) < $L[1]);
@ -939,6 +939,6 @@ __HALT_COMPILER(); ?>
" "
============================================================================ ============================================================================
============================================================================ ============================================================================
int(7052) int(7076)
Illegal filename passed in for stub creation, was 401 characters long, and only 400 or less is allowed Illegal filename passed in for stub creation, was 401 characters long, and only 400 or less is allowed
===DONE=== ===DONE===

View file

@ -3,7 +3,7 @@ include dirname(__FILE__) . '/tarmaker.php.inc';
class corrupter extends tarmaker { class corrupter extends tarmaker {
function close() function close()
{ {
fwrite($this->tmp, 'oopsie'); fwrite($this->tmp, (binary)'oopsie');
fclose($this->tmp); fclose($this->tmp);
} }
} }

View file

@ -107,16 +107,16 @@ class tarmaker
$checksum = pack('a8', sprintf('%6s ', decoct($checksum))); $checksum = pack('a8', sprintf('%6s ', decoct($checksum)));
fwrite($this->tmp, $block . $checksum . $blockend, 512); fwrite($this->tmp, (binary)$block . $checksum . $blockend, 512);
if (is_resource($fileOrStream)) { if (is_resource($fileOrStream)) {
stream_copy_to_stream($fileOrStream, $this->tmp); stream_copy_to_stream($fileOrStream, $this->tmp);
if ($stat['size'] % 512) { if ($stat['size'] % 512) {
fwrite($this->tmp, str_repeat("\0", 512 - $stat['size'] % 512)); fwrite($this->tmp, (binary)str_repeat("\0", 512 - $stat['size'] % 512));
} }
} else { } else {
fwrite($this->tmp, $fileOrStream); fwrite($this->tmp, (binary)$fileOrStream);
if (strlen($fileOrStream) % 512) { if (strlen($fileOrStream) % 512) {
fwrite($this->tmp, str_repeat("\0", 512 - strlen($fileOrStream) % 512)); fwrite($this->tmp, (binary)str_repeat("\0", 512 - strlen($fileOrStream) % 512));
} }
} }
} }

View file

@ -47,12 +47,12 @@ __HALT_COMPILER();
?> ?>
--EXPECT-- --EXPECT--
bool(false) bool(false)
int(6659) int(6683)
bool(true) bool(true)
string(60) "<?php // tar-based phar archive stub file string(60) "<?php // tar-based phar archive stub file
__HALT_COMPILER();" __HALT_COMPILER();"
bool(true) bool(true)
int(6659) int(6683)
bool(true) bool(true)
int(6659) int(6683)
===DONE=== ===DONE===

View file

@ -49,14 +49,14 @@ __HALT_COMPILER();
?> ?>
--EXPECT-- --EXPECT--
bool(false) bool(false)
int(6659) int(6683)
bool(true) bool(true)
string(60) "<?php // tar-based phar archive stub file string(60) "<?php // tar-based phar archive stub file
__HALT_COMPILER();" __HALT_COMPILER();"
bool(true) bool(true)
int(4096) int(4096)
int(6659) int(6683)
bool(true) bool(true)
bool(true) bool(true)
int(6659) int(6683)
===DONE=== ===DONE===

View file

@ -49,14 +49,14 @@ __HALT_COMPILER();
?> ?>
--EXPECT-- --EXPECT--
bool(false) bool(false)
int(6659) int(6683)
bool(true) bool(true)
string(60) "<?php // tar-based phar archive stub file string(60) "<?php // tar-based phar archive stub file
__HALT_COMPILER();" __HALT_COMPILER();"
bool(true) bool(true)
int(8192) int(8192)
int(6659) int(6683)
bool(true) bool(true)
bool(true) bool(true)
int(6659) int(6683)
===DONE=== ===DONE===

View file

@ -46,12 +46,12 @@ __HALT_COMPILER();
?> ?>
--EXPECT-- --EXPECT--
bool(false) bool(false)
int(6659) int(6683)
bool(true) bool(true)
string(60) "<?php // zip-based phar archive stub file string(60) "<?php // zip-based phar archive stub file
__HALT_COMPILER();" __HALT_COMPILER();"
bool(true) bool(true)
int(6659) int(6683)
bool(true) bool(true)
int(6659) int(6683)
===DONE=== ===DONE===