From: Nikita Popov Date: Fri, 23 Aug 2019 13:51:57 +0000 (+0200) Subject: Replace strncat in filter implementation X-Git-Tag: php-7.4.0RC1~55 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=724a4662b8c8b9a9167e7bf2de5dabbd6533056d;p=php Replace strncat in filter implementation In this case we already know exactly where we need to write, no need to use strncat at all. --- diff --git a/ext/standard/user_filters.c b/ext/standard/user_filters.c index 4fb177a3ee..6cba49b030 100644 --- a/ext/standard/user_filters.c +++ b/ext/standard/user_filters.c @@ -292,8 +292,9 @@ static php_stream_filter *user_filter_factory_create(const char *filtername, memcpy(wildcard, filtername, len + 1); /* copy \0 */ period = wildcard + (period - filtername); while (period) { - *period = '\0'; - strncat(wildcard, ".*", 2); + ZEND_ASSERT(period[0] == '.'); + period[1] = '*'; + period[2] = '\0'; if (NULL != (fdat = zend_hash_str_find_ptr(BG(user_filter_map), wildcard, strlen(wildcard)))) { period = NULL; } else { diff --git a/main/streams/filter.c b/main/streams/filter.c index afc1f3b8e5..7fdbd0c3bf 100644 --- a/main/streams/filter.c +++ b/main/streams/filter.c @@ -239,8 +239,9 @@ PHPAPI php_stream_filter *php_stream_filter_create(const char *filtername, zval memcpy(wildname, filtername, n+1); period = wildname + (period - filtername); while (period && !filter) { - *period = '\0'; - strncat(wildname, ".*", 2); + ZEND_ASSERT(period[0] == '.'); + period[1] = '*'; + period[2] = '\0'; if (NULL != (factory = zend_hash_str_find_ptr(filter_hash, wildname, strlen(wildname)))) { filter = factory->create_filter(filtername, filterparams, persistent); }