From d61e5858138c89adaf09ac0f0a903689b6d2e259 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20Enes=20K=C3=BC=C3=A7=C3=BCk?= Date: Thu, 28 May 2026 22:37:13 +0300 Subject: [PATCH 1/2] Fix: Add errno check to strtol for detecting out-of-range width values --- src/main.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/main.c b/src/main.c index 3b52a97f0..e7e389a1b 100644 --- a/src/main.c +++ b/src/main.c @@ -125,7 +125,12 @@ int main(int argc, char *argv[]) { } else if (strcmp(argv[i], "--width") == 0) { i += 1; if (i < argc) { + errno = 0; width = (int)strtol(argv[i], &unparsed, 10); + if (errno == ERANGE) { + fprintf(stderr, "width value out of range: '%s'\n", argv[i]); + exit(1); + } if (unparsed && unparsed[0]) { fprintf(stderr, "failed parsing width '%s' at '%s'\n", argv[i], unparsed); From fb8b9a6d1b93ee3ec44b3e39f42d24672afbca9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C4=B0smail=20Enes=20K=C3=BC=C3=A7=C3=BCk?= Date: Fri, 29 May 2026 01:03:54 +0300 Subject: [PATCH 2/2] Fix: Handle empty input strings and reject negative widths --- src/main.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main.c b/src/main.c index e7e389a1b..2c39d764e 100644 --- a/src/main.c +++ b/src/main.c @@ -131,11 +131,15 @@ int main(int argc, char *argv[]) { fprintf(stderr, "width value out of range: '%s'\n", argv[i]); exit(1); } - if (unparsed && unparsed[0]) { + if (unparsed == argv[i] || (unparsed && unparsed[0])) { fprintf(stderr, "failed parsing width '%s' at '%s'\n", argv[i], unparsed); exit(1); } + if (width < 0) { + fprintf(stderr, "width must be >= 0: '%s'\n", argv[i]); + exit(1); + } } else { fprintf(stderr, "--width requires an argument\n"); exit(1);