diff options
author | Ilia Alshanetsky <iliaa@php.net> | 2003-06-19 16:35:17 +0000 |
---|---|---|
committer | Ilia Alshanetsky <iliaa@php.net> | 2003-06-19 16:35:17 +0000 |
commit | a370ceb742c20287867d2e142cd8d5fb954e3f97 (patch) | |
tree | 1d12f63841e1fccd585d12d5f66c8f74e05f7bef | |
parent | cbfb63c1c432007d2660097c43deadd38fe6e73a (diff) | |
download | php-git-a370ceb742c20287867d2e142cd8d5fb954e3f97.tar.gz |
Fixed memory leak, when invalid context is specified.
-rw-r--r-- | ext/standard/streamsfuncs.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/ext/standard/streamsfuncs.c b/ext/standard/streamsfuncs.c index cf7635afda..a6ceb96e5c 100644 --- a/ext/standard/streamsfuncs.c +++ b/ext/standard/streamsfuncs.c @@ -669,10 +669,10 @@ static int parse_context_options(php_stream_context *context, zval *options) static int parse_context_params(php_stream_context *context, zval *params) { - int ret = SUCCESS; + int ret = FAILURE; zval **tmp; - if (SUCCESS == zend_hash_find(Z_ARRVAL_P(params), "notification", sizeof("notification"), (void**)&tmp)) { + if ((ret = zend_hash_find(Z_ARRVAL_P(params), "notification", sizeof("notification"), (void**)&tmp)) == SUCCESS) { if (context->notifier) { php_stream_notification_free(context->notifier); @@ -684,10 +684,14 @@ static int parse_context_params(php_stream_context *context, zval *params) context->notifier->ptr = *tmp; ZVAL_ADDREF(*tmp); } - if (SUCCESS == zend_hash_find(Z_ARRVAL_P(params), "options", sizeof("options"), (void**)&tmp)) { + if ((ret = zend_hash_find(Z_ARRVAL_P(params), "options", sizeof("options"), (void**)&tmp)) == SUCCESS) { parse_context_options(context, *tmp); } - + + if (ret != SUCCESS) { + php_stream_context_free(context); + } + return ret; } |