diff options
author | Dmitry Stogov <dmitry@zend.com> | 2017-11-02 03:04:27 +0300 |
---|---|---|
committer | Dmitry Stogov <dmitry@zend.com> | 2017-11-02 03:04:27 +0300 |
commit | 468fd78bff6d97776f12fe84b946e47a4c16040f (patch) | |
tree | 3ee35539bffc872fcb3ad344e83add6be2ed54b1 | |
parent | e2589b7d029cfe78316222493827876432cc1b88 (diff) | |
download | php-git-468fd78bff6d97776f12fe84b946e47a4c16040f.tar.gz |
Fixed memory leaks
-rw-r--r-- | Zend/zend_list.c | 5 | ||||
-rw-r--r-- | main/streams/filter.c | 5 | ||||
-rw-r--r-- | main/streams/streams.c | 7 | ||||
-rw-r--r-- | main/streams/transports.c | 7 |
4 files changed, 17 insertions, 7 deletions
diff --git a/Zend/zend_list.c b/Zend/zend_list.c index c3401d85c0..1f97af9c0c 100644 --- a/Zend/zend_list.c +++ b/Zend/zend_list.c @@ -360,10 +360,7 @@ ZEND_API zend_resource* zend_register_persistent_resource(const char *key, size_ zend_string *str = zend_string_init(key, key_len, 1); zend_resource *ret = zend_register_persistent_resource_ex(str, rsrc_pointer, rsrc_type); - if (UNEXPECTED(ret == NULL)) { - free(str); - } - + zend_string_release(str); return ret; } diff --git a/main/streams/filter.c b/main/streams/filter.c index 5d8fccfca7..16c99998f9 100644 --- a/main/streams/filter.c +++ b/main/streams/filter.c @@ -46,8 +46,11 @@ PHPAPI HashTable *_php_get_stream_filters_hash(void) /* API for registering GLOBAL filters */ PHPAPI int php_stream_filter_register_factory(const char *filterpattern, php_stream_filter_factory *factory) { + int ret; zend_string *str = zend_string_init_interned(filterpattern, strlen(filterpattern), 1); - return zend_hash_add_ptr(&stream_filters_hash, str, factory) ? SUCCESS : FAILURE; + ret = zend_hash_add_ptr(&stream_filters_hash, str, factory) ? SUCCESS : FAILURE; + zend_string_release(str); + return ret; } PHPAPI int php_stream_filter_unregister_factory(const char *filterpattern) diff --git a/main/streams/streams.c b/main/streams/streams.c index 1c3a144e9b..1f82871ab3 100644 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -1665,12 +1665,17 @@ static inline int php_stream_wrapper_scheme_validate(const char *protocol, unsig PHPAPI int php_register_url_stream_wrapper(const char *protocol, php_stream_wrapper *wrapper) { unsigned int protocol_len = (unsigned int)strlen(protocol); + int ret; + zend_string *str; if (php_stream_wrapper_scheme_validate(protocol, protocol_len) == FAILURE) { return FAILURE; } - return zend_hash_add_ptr(&url_stream_wrappers_hash, zend_string_init_interned(protocol, protocol_len, 1), wrapper) ? SUCCESS : FAILURE; + str = zend_string_init_interned(protocol, protocol_len, 1); + ret = zend_hash_add_ptr(&url_stream_wrappers_hash, str, wrapper) ? SUCCESS : FAILURE; + zend_string_release(str); + return ret; } PHPAPI int php_unregister_url_stream_wrapper(const char *protocol) diff --git a/main/streams/transports.c b/main/streams/transports.c index 9bd78426f9..2bf4230870 100644 --- a/main/streams/transports.c +++ b/main/streams/transports.c @@ -31,7 +31,12 @@ PHPAPI HashTable *php_stream_xport_get_hash(void) PHPAPI int php_stream_xport_register(const char *protocol, php_stream_transport_factory factory) { - return zend_hash_update_ptr(&xport_hash, zend_string_init_interned(protocol, strlen(protocol), 1), factory) ? SUCCESS : FAILURE; + int ret; + zend_string *str = zend_string_init_interned(protocol, strlen(protocol), 1); + + ret = zend_hash_update_ptr(&xport_hash, str, factory) ? SUCCESS : FAILURE; + zend_string_release(str); + return ret; } PHPAPI int php_stream_xport_unregister(const char *protocol) |