From: Hannes Magnusson Date: Sun, 13 Apr 2008 22:40:35 +0000 (+0000) Subject: MFB5.3: Fixed bug#44712 (stream_context_set_params segfaults on invalid arguments) X-Git-Tag: RELEASE_2_0_0b1~436 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=1972f83385f94154c782f23a6299ac45dfa57f00;p=php MFB5.3: Fixed bug#44712 (stream_context_set_params segfaults on invalid arguments) --- diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index d0dc7353dc..cf69d9a498 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -972,7 +972,11 @@ static int parse_context_params(php_stream_context *context, zval *params TSRMLS context->notifier->dtor = user_space_stream_notifier_dtor; } if (SUCCESS == zend_ascii_hash_find(Z_ARRVAL_P(params), "options", sizeof("options"), (void**)&tmp)) { - parse_context_options(context, *tmp TSRMLS_CC); + if (Z_TYPE_PP(tmp) == IS_ARRAY) { + parse_context_options(context, *tmp TSRMLS_CC); + } else { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid stream/context parameter"); + } } if (SUCCESS == zend_ascii_hash_find(Z_ARRVAL_P(params), "encoding", sizeof("encoding"), (void**)&tmp)) { zval strval = **tmp; diff --git a/ext/standard/tests/streams/bug44712.phpt b/ext/standard/tests/streams/bug44712.phpt new file mode 100644 index 0000000000..9dfb26001b --- /dev/null +++ b/ext/standard/tests/streams/bug44712.phpt @@ -0,0 +1,10 @@ +--TEST-- +bug#44712 (stream_context_set_params segfaults on invalid arguments) +--FILE-- + 1)); +?> +--EXPECTF-- +Warning: stream_context_set_params(): Invalid stream/context parameter in %sbug44712.php on line %s +