From 4e728e26ca6a8b10404d733b4892c31d97677689 Mon Sep 17 00:00:00 2001 From: Philip Jones Date: Tue, 18 Feb 2020 15:30:59 -0800 Subject: [PATCH] Fix integer parsing in cli (#2003) --- programs/zstdcli.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/programs/zstdcli.c b/programs/zstdcli.c index 3ebecadca..ce431e6c9 100644 --- a/programs/zstdcli.c +++ b/programs/zstdcli.c @@ -254,10 +254,12 @@ static int readU32FromCharChecked(const char** stringPtr, unsigned* value) { unsigned result = 0; while ((**stringPtr >='0') && (**stringPtr <='9')) { - unsigned const max = (((unsigned)(-1)) / 10) - 1; + unsigned const max = ((unsigned)(-1)) / 10; + unsigned last = result; if (result > max) return 1; /* overflow error */ result *= 10; result += (unsigned)(**stringPtr - '0'); + if (result < last) return 1; /* overflow error */ (*stringPtr)++ ; } if ((**stringPtr=='K') || (**stringPtr=='M')) {