[PATCH rtems-libbsd 1/7] rtemsbsd: Catch timeout overflows
Gedare Bloom
gedare at rtems.org
Tue Jul 27 21:38:56 UTC 2021
On Tue, Jul 27, 2021 at 2:59 AM <chrisj at rtems.org> wrote:
>
> From: Chris Johns <chrisj at rtems.org>
>
> Update #4475
This change could probably use its own ticket.
> ---
> rtemsbsd/rtems/rtems-kernel-timesupport.c | 8 +++++++-
> 1 file changed, 7 insertions(+), 1 deletion(-)
>
> diff --git a/rtemsbsd/rtems/rtems-kernel-timesupport.c b/rtemsbsd/rtems/rtems-kernel-timesupport.c
> index ef14d1fa..5d290d66 100644
> --- a/rtemsbsd/rtems/rtems-kernel-timesupport.c
> +++ b/rtemsbsd/rtems/rtems-kernel-timesupport.c
> @@ -35,6 +35,7 @@
>
> #include <machine/rtems-bsd-kernel-space.h>
>
> +#include <limits.h>
> #include <sys/time.h>
>
> #include <rtems/score/timespec.h>
> @@ -46,9 +47,14 @@ int
> tvtohz(struct timeval *tv)
> {
> struct timespec ts;
> + uint32_t ticks;
>
> 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;
> +
This changes the behavior to saturating in the overflow case, which is
at least well-defined, but is it the best thing to do? (I have no
idea.)
> + return ticks;
> }
> --
> 2.24.1
>
> _______________________________________________
> devel mailing list
> devel at rtems.org
> http://lists.rtems.org/mailman/listinfo/devel
More information about the devel
mailing list