From 068bf4e83d2a615c26cdfc6ba7120590eacfed51 Mon Sep 17 00:00:00 2001 From: Frediano Ziglio Date: Fri, 21 Aug 2015 10:21:46 +0100 Subject: prevent integer overflow on 32 bit On 32 bit machine timespec->tv_sec (time_t) is 32 bit. Also 1000 * 1000 * 1000 is 32 bit. The multiplication of 2 32 bit integers gives a 32 bit integer, however this can overflow. Converting the first factor to 64 bit before the multiplication solves the issue. Signed-off-by: Frediano Ziglio --- server/red_worker.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/red_worker.c b/server/red_worker.c index 9c6921b6..eeffdd0a 100644 --- a/server/red_worker.c +++ b/server/red_worker.c @@ -164,7 +164,7 @@ static void rendering_incorrect(const char *msg) static inline red_time_t timespec_to_red_time(struct timespec *time) { - return time->tv_sec * (1000 * 1000 * 1000) + time->tv_nsec; + return (red_time_t) time->tv_sec * (1000 * 1000 * 1000) + time->tv_nsec; } static clockid_t clock_id; -- cgit