From a9c75e9cd1c6668bb11cc367dc7e08bb192b49ec Mon Sep 17 00:00:00 2001 From: Alex 'AdUser' Z Date: Thu, 1 Sep 2016 22:46:44 +1000 Subject: [PATCH] * use strl*() instead snprintf() in filters --- src/filters/CMakeLists.txt | 4 ++-- src/filters/filter.h | 2 ++ src/filters/pcre.c | 8 ++++---- src/filters/preg.c | 8 ++++---- t/CMakeLists.txt | 4 ++-- 5 files changed, 14 insertions(+), 12 deletions(-) diff --git a/src/filters/CMakeLists.txt b/src/filters/CMakeLists.txt index 6401f11..6e66da8 100644 --- a/src/filters/CMakeLists.txt +++ b/src/filters/CMakeLists.txt @@ -1,12 +1,12 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) set(FILTERS "") -add_library("f2b_filter_preg" MODULE "preg.c") +add_library("f2b_filter_preg" MODULE "preg.c" "../strlcpy.c") list(APPEND FILTERS "f2b_filter_preg") find_library(PCRE_FOUND "pcre") if (WITH_PCRE AND PCRE_FOUND) - add_library("f2b_filter_pcre" MODULE "pcre.c") + add_library("f2b_filter_pcre" MODULE "pcre.c" "../strlcpy.c") target_link_libraries("f2b_filter_pcre" "pcre") list(APPEND FILTERS "f2b_filter_pcre") endif () diff --git a/src/filters/filter.h b/src/filters/filter.h index 6c619e7..6fe16c7 100644 --- a/src/filters/filter.h +++ b/src/filters/filter.h @@ -13,6 +13,8 @@ #include #include +#include "../strlcpy.h" + #define ID_MAX 32 #define PATTERN_MAX 256 #define HOST_TOKEN "" diff --git a/src/filters/pcre.c b/src/filters/pcre.c index b7b371c..4239e5e 100644 --- a/src/filters/pcre.c +++ b/src/filters/pcre.c @@ -34,7 +34,7 @@ create(const char *id) { if ((cfg = calloc(1, sizeof(cfg_t))) == NULL) return NULL; - snprintf(cfg->id, sizeof(cfg->id), "%s", id); + strlcpy(cfg->id, id, sizeof(cfg->id)); return cfg; } @@ -85,8 +85,8 @@ append(cfg_t *cfg, const char *pattern) { memset(buf, 0x0, bufsize); memcpy(buf, pattern, token - pattern); - strcat(buf, HOST_REGEX); - strcat(buf, token + strlen(HOST_TOKEN)); + strlcat(buf, HOST_REGEX, bufsize); + strlcat(buf, token + strlen(HOST_TOKEN), bufsize); if ((regex = calloc(1, sizeof(f2b_regex_t))) == NULL) return false; @@ -111,7 +111,7 @@ append(cfg_t *cfg, const char *pattern) { regex->next = cfg->regexps; cfg->regexps = regex; - snprintf(regex->pattern, sizeof(regex->pattern), "%s", pattern); + strlcpy(regex->pattern, pattern, sizeof(regex->pattern)); return true; } diff --git a/src/filters/preg.c b/src/filters/preg.c index 3790fc0..68dc01e 100644 --- a/src/filters/preg.c +++ b/src/filters/preg.c @@ -32,7 +32,7 @@ create(const char *id) { if ((cfg = calloc(1, sizeof(cfg_t))) == NULL) return NULL; - snprintf(cfg->id, sizeof(cfg->id), "%s", id); + strlcpy(cfg->id, id, sizeof(cfg->id)); return cfg; } @@ -73,8 +73,8 @@ append(cfg_t *cfg, const char *pattern) { memset(buf, 0x0, bufsize); memcpy(buf, pattern, token - pattern); - strcat(buf, HOST_REGEX); - strcat(buf, token + strlen(HOST_TOKEN)); + strlcat(buf, HOST_REGEX, bufsize); + strlcat(buf, token + strlen(HOST_TOKEN), bufsize); if ((regex = calloc(1, sizeof(f2b_regex_t))) == NULL) return false; @@ -82,7 +82,7 @@ append(cfg_t *cfg, const char *pattern) { if (regcomp(®ex->regex, buf, flags) == 0) { regex->next = cfg->regexps; cfg->regexps = regex; - snprintf(regex->pattern, sizeof(regex->pattern), "%s", pattern); + strlcpy(regex->pattern, pattern, sizeof(regex->pattern)); return true; } diff --git a/t/CMakeLists.txt b/t/CMakeLists.txt index bc257e0..6fdee34 100644 --- a/t/CMakeLists.txt +++ b/t/CMakeLists.txt @@ -14,11 +14,11 @@ add_test("tests/f2b_matches_*" "t_matches") add_test("tests/f2b_ipaddr_*" "t_ipaddr") add_test("tests/f2b_config_param*" "t_config_param") -add_executable("t_filter_preg" "t_filters.c" "${SRC_DIR}/filters/preg.c") +add_executable("t_filter_preg" "t_filters.c" "${SRC_DIR}/filters/preg.c" "${SRC_DIR}/strlcpy.c") add_test("tests/filter/preg" "t_filter_preg") if (WITH_PCRE) add_test("tests/filter/pcre" "t_filter_pcre") -add_executable("t_filter_pcre" "t_filters.c" "${SRC_DIR}/filters/pcre.c") +add_executable("t_filter_pcre" "t_filters.c" "${SRC_DIR}/filters/pcre.c" "${SRC_DIR}/strlcpy.c") target_link_libraries("t_filter_pcre" "pcre") endif ()