From a1d1c7809dcc36971812add8966a01fd28b4db75 Mon Sep 17 00:00:00 2001 From: Markus Uhlin Date: Mon, 23 Mar 2026 19:50:44 +0100 Subject: ExplainFormula: check for snprintf() truncation --- FICS/formula.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'FICS/formula.c') diff --git a/FICS/formula.c b/FICS/formula.c index a7ee006..226fcfa 100644 --- a/FICS/formula.c +++ b/FICS/formula.c @@ -604,11 +604,20 @@ ExplainFormula(game *g, textlist **clauses) which = ChooseClauses(challenged, challenged->formula); for (i = 0; i < MAX_FORMULA; i++) { + int ret; + if ((which & (1 << i)) == 0) continue; dummy_index = 0; CheckFormula(g, i, &dummy_index, OPTYPE_NONE, &value, 1); - snprintf(txt, sizeof txt, "%d", value); + + ret = snprintf(txt, sizeof txt, "%d", value); + + if (is_too_long(ret, sizeof txt)) { + warnx("%s: snprintf() truncated", __func__); + continue; + } + SaveTextListEntry(Cur, txt, i); Cur = &(*Cur)->next; } -- cgit v1.2.3