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 <mlichvar@redhat.com>
master
Miroslav Lichvar 2019-01-28 10:39:41 +01:00 committed by Richard Cochran
parent 3c7e4947e4
commit 6d50817dc0
1 changed files with 2 additions and 2 deletions

4
port.c
View File

@ -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);