From b90c1e085564c410bddb5f4c9ea796cb41804bd2 Mon Sep 17 00:00:00 2001 From: Joseph Hunkeler Date: Fri, 24 Apr 2026 23:28:05 -0400 Subject: Fix snprintf calls --- src/lib/core/ini.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/lib/core/ini.c b/src/lib/core/ini.c index 16ffc20..12541f5 100644 --- a/src/lib/core/ini.c +++ b/src/lib/core/ini.c @@ -456,15 +456,19 @@ int ini_write(struct INIFILE *ini, FILE **stream, unsigned mode) { return -1; } + size_t len = 0; if (*hint == INIVAL_TYPE_STR_ARRAY) { int leading_space = isspace(*render); if (leading_space) { - snprintf(outvalue + strlen(outvalue), sizeof(outvalue) - strlen(outvalue), "%s" LINE_SEP, render); + len = sizeof(outvalue) - (size_t) snprintf(NULL, 0, "%s" LINE_SEP, render); + snprintf(outvalue + strlen(outvalue), len, "%s" LINE_SEP, render); } else { - snprintf(outvalue + strlen(outvalue), sizeof(outvalue) - strlen(outvalue), " %s" LINE_SEP, render); + len = sizeof(outvalue) - (size_t) snprintf(NULL, 0, " %s" LINE_SEP, render); + snprintf(outvalue + strlen(outvalue), len, " %s" LINE_SEP, render); } } else { - snprintf(outvalue + strlen(outvalue), sizeof(outvalue) - strlen(outvalue), "%s", render); + len = sizeof(outvalue) - (size_t) snprintf(NULL, 0, "%s", render); + snprintf(outvalue + strlen(outvalue), len, "%s", render); } if (mode == INI_WRITE_PRESERVE) { guard_free(render); -- cgit