summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlejandro Colomar <alx@kernel.org>2024-03-16 12:21:16 +0100
committerAlejandro Colomar <alx@kernel.org>2024-03-16 13:30:38 +0100
commitff0b5e068b4f2c095480ef7d7025c8173b8a379e (patch)
treef77f8fc7409ee45658afd4fbb4b88fac8ef717eb
parent7416f8d1581377046d0d6ca9d9720062ac798400 (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.cpp3
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);