diff --git a/src/main.c b/src/main.c index 3b52a97f0..2c39d764e 100644 --- a/src/main.c +++ b/src/main.c @@ -125,12 +125,21 @@ 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 (unparsed && unparsed[0]) { + if (errno == ERANGE) { + fprintf(stderr, "width value out of range: '%s'\n", argv[i]); + exit(1); + } + 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);