From 76185836f0489296ce569c1b854260888a5043d9 Mon Sep 17 00:00:00 2001 From: Heiko Weber Date: Fri, 15 Jul 2022 10:13:50 +0200 Subject: [PATCH] Fix GH-9017: php_stream_sock_open_from_socket could return NULL --- ext/standard/streamsfuncs.c | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index f4460c68f7527..5335a47291b5a 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -67,10 +67,22 @@ PHP_FUNCTION(stream_socket_pair) RETURN_FALSE; } - array_init(return_value); - - s1 = php_stream_sock_open_from_socket(pair[0], 0); - s2 = php_stream_sock_open_from_socket(pair[1], 0); + s1 = php_stream_sock_open_from_socket(pair[0], 0); + if (s1 == NULL) { + close(pair[0]); + close(pair[1]); + php_error_docref(NULL, E_WARNING, "Failed to open stream from socketpair"); + RETURN_FALSE; + } + s2 = php_stream_sock_open_from_socket(pair[1], 0); + if (s2 == NULL) { + php_stream_free(s1, PHP_STREAM_FREE_CLOSE); + close(pair[1]); + php_error_docref(NULL, E_WARNING, "Failed to open stream from socketpair"); + RETURN_FALSE; + } + + array_init(return_value); /* set the __exposed flag. * php_stream_to_zval() does, add_next_index_resource() does not */