From 4d56211ce3c54dd3384af7251029ad59eba7fcdb Mon Sep 17 00:00:00 2001 From: deischen Date: Sun, 7 Oct 2001 02:34:43 +0000 Subject: [PATCH] Limit maximum poll interval to 60 seconds. This prevents an overflow from occurring when converting from a timeval/timespec to a timeout in milliseconds. Submitted by: dwmalone --- lib/libc_r/uthread/uthread_kern.c | 3 +++ lib/libkse/thread/thr_kern.c | 3 +++ lib/libpthread/thread/thr_kern.c | 3 +++ 3 files changed, 9 insertions(+) diff --git a/lib/libc_r/uthread/uthread_kern.c b/lib/libc_r/uthread/uthread_kern.c index 9d317eda6cca..ec4c233fef08 100644 --- a/lib/libc_r/uthread/uthread_kern.c +++ b/lib/libc_r/uthread/uthread_kern.c @@ -716,6 +716,9 @@ thread_kern_poll(int wait_reqd) */ timeout_ms = INFTIM; } + else if (pthread->wakeup_time.tv_sec - ts.tv_sec > 60000) + /* Limit maximum timeout to prevent rollover. */ + timeout_ms = 60000; else { /* * Calculate the time left for the next thread to diff --git a/lib/libkse/thread/thr_kern.c b/lib/libkse/thread/thr_kern.c index 9d317eda6cca..ec4c233fef08 100644 --- a/lib/libkse/thread/thr_kern.c +++ b/lib/libkse/thread/thr_kern.c @@ -716,6 +716,9 @@ thread_kern_poll(int wait_reqd) */ timeout_ms = INFTIM; } + else if (pthread->wakeup_time.tv_sec - ts.tv_sec > 60000) + /* Limit maximum timeout to prevent rollover. */ + timeout_ms = 60000; else { /* * Calculate the time left for the next thread to diff --git a/lib/libpthread/thread/thr_kern.c b/lib/libpthread/thread/thr_kern.c index 9d317eda6cca..ec4c233fef08 100644 --- a/lib/libpthread/thread/thr_kern.c +++ b/lib/libpthread/thread/thr_kern.c @@ -716,6 +716,9 @@ thread_kern_poll(int wait_reqd) */ timeout_ms = INFTIM; } + else if (pthread->wakeup_time.tv_sec - ts.tv_sec > 60000) + /* Limit maximum timeout to prevent rollover. */ + timeout_ms = 60000; else { /* * Calculate the time left for the next thread to