зеркало из https://github.com/microsoft/git.git
config: avoid calling `labs()` on too-large data type
The `labs()` function operates, as the initial `l` suggests, on `long` parameters. However, in `config.c` we tried to use it on values of type `intmax_t`. This problem was found by GCC v9.x. To fix it, let's just "unroll" the function (i.e. negate the value if it is negative). Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
4fa42df972
Коммит
9dae4fe79f
4
config.c
4
config.c
|
@ -869,9 +869,9 @@ static int git_parse_signed(const char *value, intmax_t *ret, intmax_t max)
|
|||
errno = EINVAL;
|
||||
return 0;
|
||||
}
|
||||
uval = labs(val);
|
||||
uval = val < 0 ? -val : val;
|
||||
uval *= factor;
|
||||
if (uval > max || labs(val) > uval) {
|
||||
if (uval > max || (val < 0 ? -val : val) > uval) {
|
||||
errno = ERANGE;
|
||||
return 0;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче