diff options
author | Chris Johns <chrisj@rtems.org> | 2021-07-19 18:57:51 +1000 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2021-08-15 10:15:11 +1000 |
commit | ac0f1c600eb88b8011afacaef3c41d7f8800c78f (patch) | |
tree | b9bb4cd9521592b41a4ab9b176ac365054d87f42 | |
parent | f435cddb44310ea22195cf5df80884ea1168b6a3 (diff) |
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; } |