config: set errno in numeric git_parse_* functions
commit33fdd77e2b8ece3490982f9a35c8669d16879ba8
authorJeff King <peff@peff.net>
Sun, 8 Sep 2013 08:36:42 +0000 (8 04:36 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 9 Sep 2013 18:06:38 +0000 (9 11:06 -0700)
tree4fdf8bc8a5dc3db299108feb14bf7aaf4c5b2071
parent42d194e95870a9eeea192789226b7d51b1c90c96
config: set errno in numeric git_parse_* functions

When we are parsing an integer or unsigned long, we use
the strto*max functions, which properly set errno to ERANGE
if we get a large value. However, we also do further range
checks after applying our multiplication factor, but do not
set ERANGE. This means that a caller cannot tell if an error
was caused by ERANGE or if the input was simply not a valid
number.

This patch teaches git_parse_signed and git_parse_unsigned to set
ERANGE for range errors, and EINVAL for other errors, so that the
caller can reliably tell these cases apart.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
config.c