diff options
author | Chris Johns <chrisj@rtems.org> | 2021-07-19 18:57:51 +1000 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2021-08-28 10:24:37 +1000 |
commit | 2a01430ba5f2cbb3c4275abc6ab6fb7dec1e44c5 (patch) | |
tree | 22c8e12e4eab6736a18c2c79d1a89b46ba59c4d0 | |
parent | rtemsbsd: Add FrreBSD's clang-format style (diff) | |
download | rtems-libbsd-2a01430ba5f2cbb3c4275abc6ab6fb7dec1e44c5.tar.bz2 |
rtemsbsd: Catch timeout overflows
Update #4475
-rw-r--r-- | rtemsbsd/rtems/rtems-kernel-timesupport.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/rtemsbsd/rtems/rtems-kernel-timesupport.c b/rtemsbsd/rtems/rtems-kernel-timesupport.c index ef14d1fa..bc2e7b9f 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; } |