iliaa Thu Jun 19 12:35:17 2003 EDT
Modified files:
/php4/ext/standard streamsfuncs.c
Log:
Fixed memory leak, when invalid context is specified.
Index: php4/ext/standard/streamsfuncs.c
diff -u php4/ext/standard/streamsfuncs.c:1.19 php4/ext/standard/streamsfuncs.c:1.20
--- php4/ext/standard/streamsfuncs.c:1.19 Thu Jun 19 12:10:54 2003
+++ php4/ext/standard/streamsfuncs.c Thu Jun 19 12:35:17 2003
@@ -17,7 +17,7 @@
+----------------------------------------------------------------------+
*/
-/* $Id: streamsfuncs.c,v 1.19 2003/06/19 16:10:54 iliaa Exp $ */
+/* $Id: streamsfuncs.c,v 1.20 2003/06/19 16:35:17 iliaa Exp $ */
#include "php.h"
#include "php_globals.h"
@@ -669,10 +669,10 @@
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 @@
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;
}
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php