0 <= fd < FD_SETSIZE must hold, or else undefined behavior in FD_SET()
and buffer overrun in LwpFdwait[fd]. Check of upper bound off by one,
check of lower bound missing.
*
* Known contributors to this file:
* Dave Pare, 1994
- * Markus Armbruster, 2007
+ * Markus Armbruster, 2007-2011
* Ron Koenderink, 2009
*/
{
lwpStatus(LwpCurrent, "sleeping on fd %d for %d", fd, mask);
- if (CANT_HAPPEN(fd > FD_SETSIZE)) {
+ if (CANT_HAPPEN(fd < 0 || fd >= FD_SETSIZE)) {
errno = EBADF;
return -1;
}