From a11363e9e7c3dca151a773193c1d0a2fad39180e Mon Sep 17 00:00:00 2001 From: nicm Date: Tue, 14 Apr 2026 07:24:23 +0000 Subject: [PATCH] Limit precision to 100 to stop silly formats from running out of memory, reported by z1281552865 at gmail dot com. --- format.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/format.c b/format.c index db769668..9e671428 100644 --- a/format.c +++ b/format.c @@ -90,6 +90,9 @@ format_job_cmp(struct format_job *fj1, struct format_job *fj2) /* Maimum repeat size. */ #define FORMAT_MAX_REPEAT 10000 +/* Maimum precision. */ +#define FORMAT_MAX_PRECISION 100 + /* Format modifiers. */ #define FORMAT_TIMESTRING 0x1 #define FORMAT_BASENAME 0x2 @@ -4850,7 +4853,8 @@ format_replace_expression(struct format_modifier *mexp, /* The third argument may be precision. */ if (argc >= 3) { - prec = strtonum(mexp->argv[2], INT_MIN + 1, INT_MAX, &errstr); + prec = strtonum(mexp->argv[2], -FORMAT_MAX_PRECISION, + FORMAT_MAX_PRECISION, &errstr); if (errstr != NULL) { format_log(es, "expression precision %s: %s", errstr, mexp->argv[2]);