about summary refs log tree commit diff
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2022-02-08 12:37:45 +0100
committerJune McEnroe <june@causal.agency>2022-02-18 00:00:57 +0000
commitc5809a4296f852fe30a7356854d3d0758fa1bf7f (patch)
tree03a60ac0f03abae8795a1abe03ce045fa4de53dc
parentAllow to give readme head from query (diff)
downloadcgit-pink-c5809a4296f852fe30a7356854d3d0758fa1bf7f.tar.gz
cgit-pink-c5809a4296f852fe30a7356854d3d0758fa1bf7f.zip
Fix fmt() off-by-one error
vsnprintf returns the byte count of the formatted output not including
the null terminator, so in the case that len == 1024 the last character
of the output was being truncated and not detected by the later check.
Changing the greater than comparison to greater than or equal fixes this
edge case.
-rw-r--r--html.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/html.c b/html.c
index cefcf5e..ced781a 100644
--- a/html.c
+++ b/html.c
@@ -59,7 +59,7 @@ char *fmt(const char *format, ...)
 	va_start(args, format);
 	len = vsnprintf(buf[bufidx], sizeof(buf[bufidx]), format, args);
 	va_end(args);
-	if (len > sizeof(buf[bufidx])) {
+	if (len >= sizeof(buf[bufidx])) {
 		fprintf(stderr, "[html.c] string truncated: %s\n", format);
 		exit(1);
 	}