diff --git a/src/liboping.c b/src/liboping.c
index f8c5bfbf6a6c251f5ac2f91ec4e20acd2d64949f..fc9ed65c63198f081a9e5ecb2b7dc2ab474177a9 100644 (file)
--- a/src/liboping.c
+++ b/src/liboping.c
if (!timerisset (ptr->timer))
continue;
+ assert (ptr->fd < FD_SETSIZE);
FD_SET (ptr->fd, &read_fds);
FD_SET (ptr->fd, &err_fds);
num_fds++;
ping_set_errno (obj, errno);
continue;
}
+ else if (ph->fd >= FD_SETSIZE)
+ {
+ dprintf("socket(2) returned file descriptor %d, which is above the file "
+ "descriptor limit for select(2) (FD_SETSIZE = %d)\n",
+ ph->fd, FD_SETSIZE);
+ close(ph->fd);
+ ph->fd = -1;
+ ping_set_errno(obj, EMFILE);
+ continue;
+ }
if (obj->srcaddr != NULL)
{