summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2003-06-19 16:35:17 +0000
committerIlia Alshanetsky <iliaa@php.net>2003-06-19 16:35:17 +0000
commita370ceb742c20287867d2e142cd8d5fb954e3f97 (patch)
tree1d12f63841e1fccd585d12d5f66c8f74e05f7bef
parentcbfb63c1c432007d2660097c43deadd38fe6e73a (diff)
downloadphp-git-a370ceb742c20287867d2e142cd8d5fb954e3f97.tar.gz
Fixed memory leak, when invalid context is specified.
-rw-r--r--ext/standard/streamsfuncs.c12
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;
}