Date: Fri, 19 Dec 1997 06:24:40 +1100 From: Bruce Evans <bde@zeta.org.au> To: current@FreeBSD.ORG, lars@fredriks-1.pr.mcs.net Subject: Re: EDOM and hz Message-ID: <199712181924.GAA07415@godzilla.zeta.org.au>
next in thread | raw e-mail | index | archive | help
> if (tv->tv_sec > SHRT_MAX / hz - hz) {
> error = EDOM;
> goto bad;
> }
> val = tv->tv_sec * hz + tv->tv_usec / tick;
>
>
>If we are running with hz anything but 100 this code sort of breaks.
>
>That is:
>
>32767/100-100 = 227
>
>but
>32767/250-250 = -119
Actually, it prevents breakage when `val' is stored in sb_timeo which
is short. It seems to allow breakage when tv->tv_sec < 0.
>Can we modify this check in such a fashion that works more universally?
Perhaps sb_timeo should be long.
>Perhaps by changing val to an int??
>
>and make it:
> if (tv->tv_sec > INT_MAX/hz -hz)
Not universally. INT_MAX is not guaranteed to be > 32767. If hz is
LONG_MAX :-), then the variable needs to be much longer than long.
Bruce
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199712181924.GAA07415>
