[rtems-libbsd commit] rtemsbsd: Catch timeout overflows

Chris Johns chrisj at rtems.org
Thu Sep 2 02:43:00 UTC 2021


Module:    rtems-libbsd
Branch:    6-freebsd-12
Commit:    2a01430ba5f2cbb3c4275abc6ab6fb7dec1e44c5
Changeset: http://git.rtems.org/rtems-libbsd/commit/?id=2a01430ba5f2cbb3c4275abc6ab6fb7dec1e44c5

Author:    Chris Johns <chrisj at rtems.org>
Date:      Mon Jul 19 18:57:51 2021 +1000

rtemsbsd: Catch timeout overflows

Update #4475

---

 rtemsbsd/rtems/rtems-kernel-timesupport.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/rtemsbsd/rtems/rtems-kernel-timesupport.c b/rtemsbsd/rtems/rtems-kernel-timesupport.c
index ef14d1f..bc2e7b9 100644
--- a/rtemsbsd/rtems/rtems-kernel-timesupport.c
+++ b/rtemsbsd/rtems/rtems-kernel-timesupport.c
@@ -37,6 +37,7 @@
 
 #include <sys/time.h>
 
+#include <limits.h>
 #include <rtems/score/timespec.h>
 
 /*
@@ -45,10 +46,15 @@
 int
 tvtohz(struct timeval *tv)
 {
-  struct timespec ts;
+	struct timespec ts;
+	uint32_t ticks;
 
-  ts.tv_sec = tv->tv_sec;
-  ts.tv_nsec = tv->tv_usec * 1000;
+	ts.tv_sec = tv->tv_sec;
+	ts.tv_nsec = tv->tv_usec * 1000;
 
-  return (int) _Timespec_To_ticks( &ts );
+	ticks = _Timespec_To_ticks(&ts);
+	if (ticks > INT_MAX)
+		ticks = INT_MAX;
+
+	return ticks;
 }



More information about the vc mailing list