From d5894c073812e18ab8358cda0a7dcf4afd81d79c Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Tue, 23 Nov 2021 14:41:08 +0100 Subject: [PATCH] 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. --- main.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/main.c b/main.c index 355cdc3..6a9463f 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); } /* ================================================== */