diff options
author | Xinchen Hui <laruence@gmail.com> | 2017-02-12 18:55:19 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@gmail.com> | 2017-02-12 18:55:19 +0800 |
commit | ee25eb0eae52a942c914b997c14d9558be76ee88 (patch) | |
tree | 8ccec0846d11e94082ed096be1db0530791780bb | |
parent | 981c58705ada3f645232afa490ac334bc27306ae (diff) | |
download | php-git-ee25eb0eae52a942c914b997c14d9558be76ee88.tar.gz |
Fixed #73496 (Invalid memory access in zend_inline_hash_func)
no test script is added because it requre too much memory
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | main/streams/filter.c | 6 |
2 files changed, 7 insertions, 3 deletions
@@ -39,6 +39,10 @@ PHP NEWS . Fixed bug #73118 (is_callable callable name reports misleading value for anonymous classes). (Adam Saponara) +- Streams: + . Fixed bug #73496 (Invalid memory access in zend_inline_hash_func). + (Laruence) + 16 Feb 2017 PHP 7.0.16 diff --git a/main/streams/filter.c b/main/streams/filter.c index ecb4f5982a..6d38869556 100644 --- a/main/streams/filter.c +++ b/main/streams/filter.c @@ -252,10 +252,10 @@ PHPAPI php_stream_filter *php_stream_filter_create(const char *filtername, zval HashTable *filter_hash = (FG(stream_filters) ? FG(stream_filters) : &stream_filters_hash); php_stream_filter_factory *factory = NULL; php_stream_filter *filter = NULL; - int n; + size_t n; char *period; - n = (int)strlen(filtername); + n = strlen(filtername); if (NULL != (factory = zend_hash_str_find_ptr(filter_hash, filtername, n))) { filter = factory->create_filter(filtername, filterparams, persistent); @@ -263,7 +263,7 @@ PHPAPI php_stream_filter *php_stream_filter_create(const char *filtername, zval /* try a wildcard */ char *wildname; - wildname = emalloc(n+3); + wildname = safe_emalloc(1, n, 3); memcpy(wildname, filtername, n+1); period = wildname + (period - filtername); while (period && !filter) { |