]> granicus.if.org Git - php/commitdiff
add missing tests
authorGreg Beaver <cellog@php.net>
Sat, 10 Dec 2005 02:33:35 +0000 (02:33 +0000)
committerGreg Beaver <cellog@php.net>
Sat, 10 Dec 2005 02:33:35 +0000 (02:33 +0000)
ext/phar/tests/010.phpt [new file with mode: 0644]
ext/phar/tests/011.phpt [new file with mode: 0644]

diff --git a/ext/phar/tests/010.phpt b/ext/phar/tests/010.phpt
new file mode 100644 (file)
index 0000000..55d9866
--- /dev/null
@@ -0,0 +1,20 @@
+--TEST--
+PHP_Archive::mapPhar buffer overrun
+--SKIPIF--
+<?php if (!extension_loaded("phar")) print "skip";?>
+--FILE--
+<?php
+function cleanup() { unlink(dirname(__FILE__) . '/008_phar.php'); }
+register_shutdown_function('cleanup');
+$file = "<?php
+PHP_Archive::mapPhar(5, 'hio', false);
+__HALT_COMPILER(); ?>";
+$manifest = pack('V', 1) . 'a' . pack('VVVV', 1, time(), 0, 1);
+// this fails because the manifest length does not include the 4-byte "length of manifest" data
+$file .= pack('VV', strlen($manifest), 1) . $manifest . pack('VV', crc32('a'), 1) . 'a';
+file_put_contents(dirname(__FILE__) . '/008_phar.php', $file);
+include dirname(__FILE__) . '/008_phar.php';
+echo file_get_contents('phar://hio/a');
+?>
+--EXPECTF--
+Fatal error: PHP_Archive::mapPhar(): internal corruption of phar "%s" (buffer overrun) in %s on line %d
\ No newline at end of file
diff --git a/ext/phar/tests/011.phpt b/ext/phar/tests/011.phpt
new file mode 100644 (file)
index 0000000..d98042b
--- /dev/null
@@ -0,0 +1,20 @@
+--TEST--
+PHP_Archive::mapPhar filesize too small in manifest
+--SKIPIF--
+<?php if (!extension_loaded("phar")) print "skip";?>
+--FILE--
+<?php
+function cleanup() { unlink(dirname(__FILE__) . '/008_phar.php'); }
+register_shutdown_function('cleanup');
+$file = "<?php
+PHP_Archive::mapPhar(5, 'hio', false);
+__HALT_COMPILER(); ?>";
+// compressed file length does not include 8 bytes for crc/file length and should
+$manifest = pack('V', 1) . 'a' . pack('VVVV', 1, time(), 0, 1);
+$file .= pack('VV', strlen($manifest) + 4, 1) . $manifest . pack('VV', crc32('a'), 1) . 'a';
+file_put_contents(dirname(__FILE__) . '/008_phar.php', $file);
+include dirname(__FILE__) . '/008_phar.php';
+echo file_get_contents('phar://hio/a');
+?>
+--EXPECTF--
+Fatal error: PHP_Archive::mapPhar(): internal corruption of phar "%s" (file size in phar is not large enough) in %s on line %d
\ No newline at end of file