bjori Mon, 20 Dec 2010 11:00:27 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=306493
Log: Fixed bug#53579 (stream_get_contents() segfaults on ziparchive streams) Also added the filename being access to the stream_get_meta_data() array Bug: http://bugs.php.net/53579 (Assigned) stream_get_contents failed Changed paths: U php/php-src/branches/PHP_5_3/NEWS A php/php-src/branches/PHP_5_3/ext/zip/tests/bug53579.phpt U php/php-src/branches/PHP_5_3/ext/zip/zip_stream.c A php/php-src/trunk/ext/zip/tests/bug53579.phpt U php/php-src/trunk/ext/zip/zip_stream.c Modified: php/php-src/branches/PHP_5_3/NEWS =================================================================== --- php/php-src/branches/PHP_5_3/NEWS 2010-12-20 10:50:59 UTC (rev 306492) +++ php/php-src/branches/PHP_5_3/NEWS 2010-12-20 11:00:27 UTC (rev 306493) @@ -81,8 +81,10 @@ . Fixed memory leaked introduced by the NULL poisoning patch (Mateusz Kocielski, Pierre) - Zip extension: + . Added the filename into the return value of stream_get_meta_data(). (Hannes) . Fixed bug #53568 (swapped memset arguments in struct initialization). (crrodriguez at opensuse dot org) + . Fixed bug #53579 (stream_get_contents() segfaults on ziparchive streams) (Hannes) 09 Dec 2010, PHP 5.3.4 - Upgraded bundled Sqlite3 to version 3.7.3. (Ilia) Added: php/php-src/branches/PHP_5_3/ext/zip/tests/bug53579.phpt =================================================================== --- php/php-src/branches/PHP_5_3/ext/zip/tests/bug53579.phpt (rev 0) +++ php/php-src/branches/PHP_5_3/ext/zip/tests/bug53579.phpt 2010-12-20 11:00:27 UTC (rev 306493) @@ -0,0 +1,44 @@ +--TEST-- +Bug #53579 (stream_get_contents() segfaults on ziparchive streams) +--SKIPIF-- +<?php +/* $Id: oo_stream.phpt 260091 2008-05-21 09:27:41Z pajoye $ */ +if(!extension_loaded('zip')) die('skip'); +?> +--FILE-- +<?php +$dirname = dirname(__FILE__) . '/'; +$file = $dirname . 'test_with_comment.zip'; +include $dirname . 'utils.inc'; +$zip = new ZipArchive; +if (!$zip->open($file)) { + exit('failed'); +} +$fp = $zip->getStream('foo'); + +var_dump($fp); +if(!$fp) exit("\n"); +$contents = stream_get_contents($fp); + +fclose($fp); +$zip->close(); +var_dump($contents); + + +$fp = fopen('zip://' . dirname(__FILE__) . '/test_with_comment.zip#foo', 'rb'); +if (!$fp) { + exit("cannot open\n"); +} +$contents = stream_get_contents($fp); +var_dump($contents); +fclose($fp); + +?> +--EXPECTF-- +resource(%d) of type (stream) +string(5) "foo + +" +string(5) "foo + +" Modified: php/php-src/branches/PHP_5_3/ext/zip/zip_stream.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/zip/zip_stream.c 2010-12-20 10:50:59 UTC (rev 306492) +++ php/php-src/branches/PHP_5_3/ext/zip/zip_stream.c 2010-12-20 11:00:27 UTC (rev 306493) @@ -216,6 +216,7 @@ self->stream = NULL; self->cursor = 0; stream = php_stream_alloc(&php_stream_zipio_ops, self, NULL, mode); + stream->orig_path = estrdup(path); } else { zip_close(stream_za); } Added: php/php-src/trunk/ext/zip/tests/bug53579.phpt =================================================================== --- php/php-src/trunk/ext/zip/tests/bug53579.phpt (rev 0) +++ php/php-src/trunk/ext/zip/tests/bug53579.phpt 2010-12-20 11:00:27 UTC (rev 306493) @@ -0,0 +1,44 @@ +--TEST-- +Bug #53579 (stream_get_contents() segfaults on ziparchive streams) +--SKIPIF-- +<?php +/* $Id: oo_stream.phpt 260091 2008-05-21 09:27:41Z pajoye $ */ +if(!extension_loaded('zip')) die('skip'); +?> +--FILE-- +<?php +$dirname = dirname(__FILE__) . '/'; +$file = $dirname . 'test_with_comment.zip'; +include $dirname . 'utils.inc'; +$zip = new ZipArchive; +if (!$zip->open($file)) { + exit('failed'); +} +$fp = $zip->getStream('foo'); + +var_dump($fp); +if(!$fp) exit("\n"); +$contents = stream_get_contents($fp); + +fclose($fp); +$zip->close(); +var_dump($contents); + + +$fp = fopen('zip://' . dirname(__FILE__) . '/test_with_comment.zip#foo', 'rb'); +if (!$fp) { + exit("cannot open\n"); +} +$contents = stream_get_contents($fp); +var_dump($contents); +fclose($fp); + +?> +--EXPECTF-- +resource(%d) of type (stream) +string(5) "foo + +" +string(5) "foo + +" Modified: php/php-src/trunk/ext/zip/zip_stream.c =================================================================== --- php/php-src/trunk/ext/zip/zip_stream.c 2010-12-20 10:50:59 UTC (rev 306492) +++ php/php-src/trunk/ext/zip/zip_stream.c 2010-12-20 11:00:27 UTC (rev 306493) @@ -216,6 +216,7 @@ self->stream = NULL; self->cursor = 0; stream = php_stream_alloc(&php_stream_zipio_ops, self, NULL, mode); + stream->orig_path = estrdup(path); } else { zip_close(stream_za); }
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php