From 9eb7c8cd3b202ff77f1442f5a5d3107bd7fc3a18 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Fri, 22 Apr 2016 21:20:53 -0700 Subject: [PATCH] Fixed bug #72075 (Referencing socket resources breaks stream_select) --- NEWS | 2 ++ ext/standard/streamsfuncs.c | 3 +++ ext/standard/tests/streams/bug72075.phpt | 15 +++++++++++++++ 3 files changed, 20 insertions(+) create mode 100644 ext/standard/tests/streams/bug72075.phpt diff --git a/NEWS b/NEWS index 18e07793ecb..fc20ad4ac53 100644 --- a/NEWS +++ b/NEWS @@ -37,6 +37,8 @@ PHP NEWS . Fixed bug #68849 (bindValue is not using the right data type). (Anatol) - Standard: + . Fixed bug #72075 (Referencing socket resources breaks stream_select). + (Laruence) . Fixed bug #72031 (array_column() against an array of objects discards all values matching null). (Nikita) diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index def1fb88d7b..0e5d0ce79e5 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -613,6 +613,7 @@ static int stream_array_to_fd_set(zval *stream_array, fd_set *fds, php_socket_t the higher bits of a SOCKET variable uninitialized on systems with little endian. */ php_socket_t this_fd; + ZVAL_DEREF(elem); php_stream_from_zval_no_verify(stream, elem); if (stream == NULL) { continue; @@ -652,6 +653,7 @@ static int stream_array_from_fd_set(zval *stream_array, fd_set *fds) ZEND_HASH_FOREACH_KEY_VAL(Z_ARRVAL_P(stream_array), num_ind, key, elem) { php_socket_t this_fd; + ZVAL_DEREF(elem); php_stream_from_zval_no_verify(stream, elem); if (stream == NULL) { continue; @@ -698,6 +700,7 @@ static int stream_array_emulate_read_fd_set(zval *stream_array) zend_hash_init(Z_ARRVAL(new_array), zend_hash_num_elements(Z_ARRVAL_P(stream_array)), NULL, ZVAL_PTR_DTOR, 0); ZEND_HASH_FOREACH_VAL(Z_ARRVAL_P(stream_array), elem) { + ZVAL_DEREF(elem); php_stream_from_zval_no_verify(stream, elem); if (stream == NULL) { continue; diff --git a/ext/standard/tests/streams/bug72075.phpt b/ext/standard/tests/streams/bug72075.phpt new file mode 100644 index 00000000000..93dce603500 --- /dev/null +++ b/ext/standard/tests/streams/bug72075.phpt @@ -0,0 +1,15 @@ +--TEST-- +Bug #72075 (Referencing socket resources breaks stream_select) +--FILE-- +