From 724a4662b8c8b9a9167e7bf2de5dabbd6533056d Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Fri, 23 Aug 2019 15:51:57 +0200 Subject: [PATCH] Replace strncat in filter implementation In this case we already know exactly where we need to write, no need to use strncat at all. --- ext/standard/user_filters.c | 5 +++-- main/streams/filter.c | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) 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); } -- 2.40.0