From: Miroslav Lichvar Date: Tue, 23 Nov 2021 13:41:08 +0000 (+0100) Subject: main: add assertions for timespec signedness X-Git-Tag: 4.2-pre1~13 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d5894c073812e18ab8358cda0a7dcf4afd81d79c;p=thirdparty%2Fchrony.git main: add assertions for timespec signedness Some of the code (e.g. util and clientlog) may work with negative values. Require that time_t and the tv_nsec types are signed. This seems to be the case on all supported systems, but it it is not required by POSIX. --- diff --git a/main.c b/main.c index 355cdc3a..6a9463fe 100644 --- a/main.c +++ b/main.c @@ -76,11 +76,18 @@ static REF_Mode ref_mode = REF_ModeNormal; static void do_platform_checks(void) { + struct timespec ts; + /* Require at least 32-bit integers, two's complement representation and the usual implementation of conversion of unsigned integers */ assert(sizeof (int) >= 4); assert(-1 == ~0); assert((int32_t)4294967295U == (int32_t)-1); + + /* Require time_t and tv_nsec in timespec to be signed */ + ts.tv_sec = -1; + ts.tv_nsec = -1; + assert(ts.tv_sec < 0 && ts.tv_nsec < 0); } /* ================================================== */