From 31ef154f15ecee1c0f13018d9cdf424713c2b62a Mon Sep 17 00:00:00 2001 From: dongshengyuan <545258830@qq.com> Date: Tue, 18 Aug 2026 16:02:32 +0800 Subject: [PATCH] core: fix integer truncation checks Use explicit bounds checks for size_t and long conversions so compilers cannot optimize away round-trip cast checks. Follow-up for 78238fd7c9bcdc4272c4aa22930424a2febf6768. --- src/core/dbus-socket.c | 4 ++-- src/shared/conf-parser.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/dbus-socket.c b/src/core/dbus-socket.c index 9b347e3c55..6a1e8cb600 100644 --- a/src/core/dbus-socket.c +++ b/src/core/dbus-socket.c @@ -159,11 +159,11 @@ const sd_bus_vtable bus_socket_vtable[] = { }; static bool check_size_t_truncation(uint64_t t) { - return (size_t) t == t; + return t <= SIZE_MAX; } static bool check_long_truncation(int64_t t) { - return (int64_t) (long) t == t; + return t <= LONG_MAX && t >= LONG_MIN; } static const char* socket_protocol_to_string(int32_t i) { diff --git a/src/shared/conf-parser.c b/src/shared/conf-parser.c index ffe888a439..a26d2f8daf 100644 --- a/src/shared/conf-parser.c +++ b/src/shared/conf-parser.c @@ -992,7 +992,7 @@ int config_parse_iec_size( assert(rvalue); r = parse_size(rvalue, 1024, &v); - if (r >= 0 && (uint64_t) (size_t) v != v) + if (r >= 0 && v > SIZE_MAX) r = -ERANGE; if (r < 0) return log_syntax_parse_error(unit, filename, line, r, lvalue, rvalue);