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>