aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJoseph Hunkeler <jhunkeler@gmail.com>2026-04-24 23:28:05 -0400
committerJoseph Hunkeler <jhunkeler@gmail.com>2026-04-24 23:28:05 -0400
commitb90c1e085564c410bddb5f4c9ea796cb41804bd2 (patch)
tree92813a762e017156e96763c1302538beed97a0e3 /src
parentf1a92821c3019f80357331d087b8ca86745857f9 (diff)
downloadstasis-b90c1e085564c410bddb5f4c9ea796cb41804bd2.tar.gz
Fix snprintf calls
Diffstat (limited to 'src')
-rw-r--r--src/lib/core/ini.c10
1 files 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);