[PATCH] html: fix fmt() off-by-one error
lemon
lsof at mailbox.org
Tue Feb 8 11:37:45 UTC 2022
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.
---
html.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/html.c b/html.c
index 7f81965..0bac34b 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);
}
--
2.35.1
More information about the CGit
mailing list