From: Anton Moryakov Date: Mon, 17 Feb 2025 16:21:53 +0000 (+0300) Subject: lib: remove redundant checks in get_u64 and get_s64 X-Git-Tag: v6.15.0~6^2~12 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aca230f0f567e407372f2a5f724f9cd6ec373dec;p=thirdparty%2Fiproute2.git lib: remove redundant checks in get_u64 and get_s64 Static analyzer reported: 1. if (res > 0xFFFFFFFFFFFFFFFFULL) Expression 'res > 0xFFFFFFFFFFFFFFFFULL' is always false , which may be caused by a logical error: 'res' has a type 'unsigned long long' with minimum value '0' and a maximum value '18446744073709551615' 2. if (res > INT64_MAX || res < INT64_MIN) Expression 'res > INT64_MAX' is always false , which may be caused by a logical error: 'res' has a type 'long long' with minimum value '-9223372036854775808' and a maximum value '9223372036854775807' Expression 'res < INT64_MIN' is always false , which may be caused by a logical error: 'res' has a type 'long long' with minimum value '-9223372036854775808' and a maximum value '9223372036854775807' Corrections explained: - Removed redundant check `res > 0xFFFFFFFFFFFFFFFFULL` in `get_u64`, as `res` cannot exceed this value due to its type. - Removed redundant checks `res > INT64_MAX` and `res < INT64_MIN` in `get_s64`, as `res` cannot exceed the range of `long long`. Triggers found by static analyzer Svace. Signed-off-by: Anton Moryakov Signed-off-by: David Ahern --- diff --git a/lib/utils.c b/lib/utils.c index be2ce0fe..706e93c3 100644 --- a/lib/utils.c +++ b/lib/utils.c @@ -304,10 +304,6 @@ int get_u64(__u64 *val, const char *arg, int base) if (res == ULLONG_MAX && errno == ERANGE) return -1; - /* in case ULL is 128 bits */ - if (res > 0xFFFFFFFFFFFFFFFFULL) - return -1; - *val = res; return 0; } @@ -399,8 +395,6 @@ int get_s64(__s64 *val, const char *arg, int base) return -1; if ((res == LLONG_MIN || res == LLONG_MAX) && errno == ERANGE) return -1; - if (res > INT64_MAX || res < INT64_MIN) - return -1; *val = res; return 0;