summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2021-02-02 10:05:35 +0100
committerNikita Popov <nikita.ppv@gmail.com>2021-02-02 10:05:35 +0100
commit51d76c346e1a22bc711c74a231b58a495f2fb42c (patch)
treedc04f4edbd4abcb9c7b47ea75ad9a0af5a0bd76e
parent675a9b28311bbe55ccb171fb67b1c23aa0d8d049 (diff)
downloadphp-git-51d76c346e1a22bc711c74a231b58a495f2fb42c.tar.gz
Fix persistent leak on load_wsdl_ex failure
Move the load_wsdl_ex call into the zend_try that destroys the docs hash table. The wsdl will be inserted into docs early on, and will thus be released on subsequent bailout.
-rw-r--r--ext/soap/php_sdl.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/ext/soap/php_sdl.c b/ext/soap/php_sdl.c
index 8d5e7335e1..26a23f57db 100644
--- a/ext/soap/php_sdl.c
+++ b/ext/soap/php_sdl.c
@@ -741,9 +741,8 @@ static sdlPtr load_wsdl(zval *this_ptr, char *struri)
zend_hash_init(&ctx.portTypes, 0, NULL, NULL, 0);
zend_hash_init(&ctx.services, 0, NULL, NULL, 0);
- load_wsdl_ex(this_ptr, struri, &ctx, 0);
zend_try {
-
+ load_wsdl_ex(this_ptr, struri, &ctx, 0);
schema_pass2(&ctx);
n = zend_hash_num_elements(&ctx.services);