diff options
author | Alejandro Colomar <alx@kernel.org> | 2024-03-16 12:21:16 +0100 |
---|---|---|
committer | Alejandro Colomar <alx@kernel.org> | 2024-03-16 13:30:38 +0100 |
commit | ff0b5e068b4f2c095480ef7d7025c8173b8a379e (patch) | |
tree | f77f8fc7409ee45658afd4fbb4b88fac8ef717eb | |
parent | 7416f8d1581377046d0d6ca9d9720062ac798400 (diff) |
[grolbp]: Fix range check after strtol(3)atoi
In case INT_MAX==LONG_MAX, we need to check for ERANGE to reject
high values. The test 'n > INT_MAX' would never be true.
Fixes: d21a9dbc7a83 ("* src/devices/grolbp/lbp.cc: (long_options): Add -w/--linewidth option.")
Link: <https://savannah.gnu.org/bugs/?65451>
Link: <https://savannah.gnu.org/bugs/?65452>
Cc: "G. Branden Robinson" <branden@debian.org>
Cc: Dave Kemper <saint.snit@gmail.com>
Cc: "James K. Lowden" <jklowden@schemamania.org>
Cc: Colin Watson <cjwatson@debian.org>
Cc: Werner LEMBERG <wl@gnu.org>
Cc: James Clark <jjc@jclark.com>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
-rw-r--r-- | src/devices/grolbp/lbp.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/src/devices/grolbp/lbp.cpp b/src/devices/grolbp/lbp.cpp index c05b42ec3..c28f2e672 100644 --- a/src/devices/grolbp/lbp.cpp +++ b/src/devices/grolbp/lbp.cpp @@ -707,10 +707,11 @@ int main(int argc, char **argv) case 'w': { char *ptr; + errno = 0; long n = strtol(optarg, &ptr, 10); if (ptr == optarg) error("argument for -w must be a non-negative integer"); - else if (n < 0 || n > INT_MAX) + else if (errno == ERANGE || n < 0 || n > INT_MAX) error("out of range argument for -w"); else linewidth_factor = int(n); |