Fixed bug#53579 (stream_get_contents() segfaults on ziparchive streams)

Also added the filename being access to the stream_get_meta_data() array
This commit is contained in:
Hannes Magnusson 2010-12-20 11:00:27 +00:00
parent f13d9c0e03
commit 3ce18aa852
3 changed files with 47 additions and 0 deletions

2
NEWS
View File

@ -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)

View File

@ -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
"

View File

@ -216,6 +216,7 @@ php_stream *php_stream_zip_open(char *filename, char *path, char *mode STREAMS_D
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);
}