diff options
author | Chris Johns <chrisj@rtems.org> | 2021-07-19 18:57:51 +1000 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2021-08-02 18:59:50 +1000 |
commit | 41e33a4e4264223f081633d65bc1c98fe75b068d (patch) | |
tree | 2b6c9aeee3fda712231d97ab36b48dc4baacf30a | |
parent | d436d7f9b0db3f3b6311da4677e03baf365b978f (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; } |