From 36d82e8a85cd9310d86dac4e34b928ca329f6859 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustavo=20Andr=C3=A9=20dos=20Santos=20Lopes?= Date: Tue, 1 Feb 2011 22:55:17 +0000 Subject: - Fixed bug #53903 (userspace stream stat callback does not separate the elements of the returned array before converting them). --- NEWS | 2 ++ ext/standard/tests/streams/bug53903.phpt | 32 ++++++++++++++++++++++++++++++++ main/streams/userspace.c | 1 + 3 files changed, 35 insertions(+) create mode 100644 ext/standard/tests/streams/bug53903.phpt diff --git a/NEWS b/NEWS index 2e404ed62b..69b7e9740f 100644 --- a/NEWS +++ b/NEWS @@ -140,6 +140,8 @@ - Streams: . Implemented FR #26158 (open arbitrary file descriptor with fopen). (Gustavo) + . Fixed bug #53903 (userspace stream stat callback does not separate the + elements of the returned array before converting them). (Gustavo) - XSL extension: . Fixed memory leaked introduced by the NULL poisoning patch. diff --git a/ext/standard/tests/streams/bug53903.phpt b/ext/standard/tests/streams/bug53903.phpt new file mode 100644 index 0000000000..3b61635d78 --- /dev/null +++ b/ext/standard/tests/streams/bug53903.phpt @@ -0,0 +1,32 @@ +--TEST-- +Bug #53903 streamwrapper/stream_stat causes problems +--FILE-- + $this->undefined, + ); + } + +} +stream_wrapper_register('sx', 'sw') or die('failed'); + +fstat(fopen('sx://test', 'r')); + +$s[] = 1; // Cannot use a scalar value as an array + +print_r($s); +--EXPECTF-- +Notice: Undefined property: sw::$undefined in %s on line %d +Array +( + [0] => 1 +) + diff --git a/main/streams/userspace.c b/main/streams/userspace.c index b7fd646d2a..3a1b5dbf54 100644 --- a/main/streams/userspace.c +++ b/main/streams/userspace.c @@ -856,6 +856,7 @@ static int statbuf_from_array(zval *array, php_stream_statbuf *ssb TSRMLS_DC) #define STAT_PROP_ENTRY_EX(name, name2) \ if (SUCCESS == zend_hash_find(Z_ARRVAL_P(array), #name, sizeof(#name), (void**)&elem)) { \ + SEPARATE_ZVAL(elem); \ convert_to_long(*elem); \ ssb->sb.st_##name2 = Z_LVAL_PP(elem); \ } -- cgit v1.2.1