- for (sock = 0; sock < FD_SETSIZE; sock += NFDBITS) {
- for (mask = *maskp++; bit = ffs(mask); mask ^= (1 << (bit - 1))) {
+ for (sock = 0; sock <= svc_maxfd; sock += NFDBITS) {
+ for (mask = *maskp++; (bit = ffs(mask)); mask ^= (1 << (bit - 1))) {
+ if ((sock + bit) > (svc_maxfd + 1))
+ /* if we're past our sockets */
+ return;