From 6d50817dc094b92478477a0259959494eba372e3 Mon Sep 17 00:00:00 2001 From: Miroslav Lichvar Date: Mon, 28 Jan 2019 10:39:41 +0100 Subject: [PATCH] port: Prevent undefined shift operations in msg_current(). Adjust checks of logMessageInterval in received packet to prevent 1 of type int being shifted by values >= 31. Signed-off-by: Miroslav Lichvar --- port.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/port.c b/port.c index 428326e..ad9554f 100644 --- a/port.c +++ b/port.c @@ -140,9 +140,9 @@ static int msg_current(struct ptp_message *m, struct timespec now) t1 = m->ts.host.tv_sec * NSEC2SEC + m->ts.host.tv_nsec; t2 = now.tv_sec * NSEC2SEC + now.tv_nsec; - if (m->header.logMessageInterval < -63) { + if (m->header.logMessageInterval <= -31) { tmo = 0; - } else if (m->header.logMessageInterval > 31) { + } else if (m->header.logMessageInterval >= 31) { tmo = INT64_MAX; } else if (m->header.logMessageInterval < 0) { tmo = 4LL * NSEC2SEC / (1 << -m->header.logMessageInterval);