From 103bad19bbc41624fbf5eb29cc4ce0236eac8aab Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Wed, 24 Sep 2025 09:07:55 +0200 Subject: [PATCH] detect/iponly: address format truncation warnings This appears to be a FP. Work around it to allow for using this warning as an error. detect-engine-iponly.c: In function 'IPOnlyCIDRListParse2': detect-engine-iponly.c:721:35: warning: 'snprintf' output may be truncated before the last format character [-Wformat-truncation=] 721 | "[%s]", rule_var_address); | ^ detect-engine-iponly.c:720:21: note: 'snprintf' output 3 or more bytes (assuming 4) into a destination of size 3 720 | snprintf(temp_rule_var_address, strlen(rule_var_address) + 3, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 721 | "[%s]", rule_var_address); | ~~~~~~~~~~~~~~~~~~~~~~~~~ detect-engine-iponly.c:782:34: warning: 'snprintf' output may be truncated before the last format character [-Wformat-truncation=] 782 | "[%s]", rule_var_address); | ^ detect-engine-iponly.c:781:21: note: 'snprintf' output 3 or more bytes (assuming 4) into a destination of size 3 781 | snprintf(temp_rule_var_address, strlen(rule_var_address) + 3, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 782 | "[%s]", rule_var_address); | ~~~~~~~~~~~~~~~~~~~~~~~~~ Ticket: #7905. --- src/detect-engine-iponly.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/detect-engine-iponly.c b/src/detect-engine-iponly.c index b498103b38..7437dbd5d6 100644 --- a/src/detect-engine-iponly.c +++ b/src/detect-engine-iponly.c @@ -712,13 +712,14 @@ static IPOnlyCIDRItem *IPOnlyCIDRListParse2( goto error; if ((negate + n_set) % 2) { - temp_rule_var_address = SCMalloc(strlen(rule_var_address) + 3); + /* add +1 to safisfy gcc 15 + -Wformat-truncation=2 */ + const size_t str_size = strlen(rule_var_address) + 3 + 1; + temp_rule_var_address = SCMalloc(str_size); if (unlikely(temp_rule_var_address == NULL)) { goto error; } - snprintf(temp_rule_var_address, strlen(rule_var_address) + 3, - "[%s]", rule_var_address); + snprintf(temp_rule_var_address, str_size, "[%s]", rule_var_address); } else { temp_rule_var_address = SCStrdup(rule_var_address); if (unlikely(temp_rule_var_address == NULL)) { @@ -774,12 +775,13 @@ static IPOnlyCIDRItem *IPOnlyCIDRListParse2( goto error; if ((negate + n_set) % 2) { - temp_rule_var_address = SCMalloc(strlen(rule_var_address) + 3); + /* add +1 to safisfy gcc 15 + -Wformat-truncation=2 */ + const size_t str_size = strlen(rule_var_address) + 3 + 1; + temp_rule_var_address = SCMalloc(str_size); if (unlikely(temp_rule_var_address == NULL)) { goto error; } - snprintf(temp_rule_var_address, strlen(rule_var_address) + 3, - "[%s]", rule_var_address); + snprintf(temp_rule_var_address, str_size, "[%s]", rule_var_address); } else { temp_rule_var_address = SCStrdup(rule_var_address); if (unlikely(temp_rule_var_address == NULL)) {