[PATCH 1/3] git_parse_unsigned: reject negative values
- From
- Phillip Wood via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Oct 21, 2022, 13:45 UTC
- Message-ID
- <9c8440e5e82777311c6217cb4a9ddcd5cb8ce689.1666359915.git.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.1389.git.1666359915.gitgitgadget@gmail.com>
From: Phillip Wood <phillip.wood@dunelm.org.uk>
git_parse_unsigned() relies on strtoumax() which unfortunately parses negative values as large positive integers. Fix this by rejecting any string that contains '-' as we do in strtoul_ui(). I've chosen to treat negative numbers as invalid input and set errno to EINVAL rather than ERANGE one the basis that they are never acceptable if we're looking for a unsigned integer.
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk> --- config.c | 5 +++++ 1 file changed, 5 insertions(+)
diff --git a/config.c b/config.c index cbb5a3bab74..d5069d4f01d 100644 --- a/config.c +++ b/config.c @@ -1193,6 +1193,11 @@ static int git_parse_unsigned(const char *value, uintmax_t *ret, uintmax_t max) uintmax_t val; uintmax_t factor; + /* negative values would be accepted by strtoumax */ + if (strchr(value, '-')) { + errno = EINVAL; + return 0; + } errno = 0; val = strtoumax(value, &end, 0); if (errno == ERANGE)
-- gitgitgadget