]> Kevux Git Server - rit/commit
git_parse_unsigned: reject negative values
authorPhillip Wood <phillip.wood@dunelm.org.uk>
Wed, 9 Nov 2022 14:16:26 +0000 (14:16 +0000)
committerTaylor Blau <me@ttaylorr.com>
Thu, 10 Nov 2022 02:30:38 +0000 (21:30 -0500)
commit84356ff7709bd45c7e61632f1b837a7144a5178f
tree2d845b6d8076ec1975be8c8d3ed75c93d98999d3
parentd5b41391a472dcf9486055fd5b8517f893e88daf
git_parse_unsigned: reject negative values

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. This is also consistent with the existing behavior
of rejecting "1–2" with EINVAL.

As we do not have unit tests for this function it is tested indirectly
by checking that negative values of reject for core.bigFileThreshold are
rejected. As this function is also used by OPT_MAGNITUDE() a test is
added to check that rejects negative values too.

Helped-by: Jeff King <peff@peff.net>
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
Signed-off-by: Taylor Blau <me@ttaylorr.com>
config.c
t/t0040-parse-options.sh
t/t1050-large.sh