aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--base/commandLine.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/base/commandLine.cpp b/base/commandLine.cpp
index 61853a1ebc..6d187ac8b1 100644
--- a/base/commandLine.cpp
+++ b/base/commandLine.cpp
@@ -267,8 +267,9 @@ void registerDefaults() {
#define DO_OPTION_INT(shortCmd, longCmd) \
DO_OPTION(shortCmd, longCmd) \
char *endptr = 0; \
- strtol(option, &endptr, 0); \
- if (endptr == NULL || *endptr != 0) usage("--%s: Invalid number '%s'", longCmd, option);
+ long int retval = strtol(option, &endptr, 0); \
+ if (endptr == NULL || *endptr != 0 || retval == 0 || retval == LONG_MAX || retval == LONG_MIN || errno == ERANGE) \
+ usage("--%s: Invalid number '%s'", longCmd, option);
// Use this for boolean options; this distinguishes between "-x" and "-X",
// resp. between "--some-option" and "--no-some-option".