Date: Thu, 18 Dec 1997 09:52:27 -0600 (CST) From: Lars Fredriksen <lars@fredriks-1.pr.mcs.net> To: current@freebsd.org Subject: EDOM and hz Message-ID: <199712181552.JAA03716@fredriks-1.pr.mcs.net>
next in thread | raw e-mail | index | archive | help
Hi,
This is a section of code in uipc_socket.c:
case SO_SNDTIMEO:
case SO_RCVTIMEO:
{
struct timeval *tv;
short val;
if (m == NULL || m->m_len < sizeof (*tv)) {
error = EINVAL;
goto bad;
}
tv = mtod(m, struct timeval *);
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
Can we modify this check in such a fashion that works more universally?
Perhaps by changing val to an int??
and make it:
if (tv->tv_sec > INT_MAX/hz -hz)
Lars
--
-------------------------------------------------------------------
Lars Fredriksen fredriks@mcs.com (home)
lars@fredriks-1.pr.mcs.net (home-home)
----- End of forwarded message from lars -----
--
-------------------------------------------------------------------
Lars Fredriksen fredriks@mcs.com (home)
lars@fredriks-1.pr.mcs.net (home-home)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199712181552.JAA03716>
