]> granicus.if.org Git - php/commitdiff
fix minor leak on zlib error, new test for gzipped internal file
authorGreg Beaver <cellog@php.net>
Sat, 10 Dec 2005 23:19:32 +0000 (23:19 +0000)
committerGreg Beaver <cellog@php.net>
Sat, 10 Dec 2005 23:19:32 +0000 (23:19 +0000)
ext/phar/phar.c
ext/phar/tests/015.phpt [new file with mode: 0644]

index 38104e1488dd19d973034b7a537515120aef5e43..196b44ee1135d4641ec2a54c8d6aa7467effbc2c 100644 (file)
@@ -657,6 +657,7 @@ PHP_PHAR_API php_stream * php_stream_phar_url_wrapper(php_stream_wrapper *wrappe
                        efree(savebuf);
                        efree(idata->file);
                        efree(idata);
+                       efree(internal_file);
                        php_error_docref(NULL TSRMLS_CC, E_WARNING, "phar error: %s", zError(status));
                        return NULL;
                }
diff --git a/ext/phar/tests/015.phpt b/ext/phar/tests/015.phpt
new file mode 100644 (file)
index 0000000..47d9d50
--- /dev/null
@@ -0,0 +1,20 @@
+--TEST--
+PHP_Archive::mapPhar valid file (gzipped)
+--SKIPIF--
+<?php if (!extension_loaded("phar")) print "skip";
+if (!PHP_Archive::canCompress()) print "skip"; ?>
+--FILE--
+<?php
+function cleanup() { unlink(dirname(__FILE__) . '/008_phar.php'); }
+register_shutdown_function('cleanup');
+$file = "<?php
+PHP_Archive::mapPhar(5, 'hio', true);
+__HALT_COMPILER(); ?>";
+$manifest = pack('V', 1) . 'a' . pack('VVVV', 1, time(), 0, 11);
+$file .= pack('VV', strlen($manifest) + 4, 1) . $manifest . pack('VV', crc32('a'), 1) . chr(75) . chr(4) . chr(0); // 'a' gzdeflated
+file_put_contents(dirname(__FILE__) . '/008_phar.php', $file);
+include dirname(__FILE__) . '/008_phar.php';
+echo file_get_contents('phar://hio/a');
+?>
+--EXPECT--
+a
\ No newline at end of file