(doit_passive): check that fds are not too large to select on
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@9101 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -493,9 +493,21 @@ doit_passive (kx_context *kc,
|
|||||||
int cookiesp = TRUE;
|
int cookiesp = TRUE;
|
||||||
|
|
||||||
FD_ZERO(&fds);
|
FD_ZERO(&fds);
|
||||||
|
if (sock >= FD_SETSIZE) {
|
||||||
|
syslog (LOG_ERR, "fd too large");
|
||||||
|
cleanup(nsockets, sockets);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
FD_SET(sock, &fds);
|
FD_SET(sock, &fds);
|
||||||
for (i = 0; i < nsockets; ++i)
|
for (i = 0; i < nsockets; ++i) {
|
||||||
|
if (sockets[i].fd >= FD_SETSIZE) {
|
||||||
|
syslog (LOG_ERR, "fd too large");
|
||||||
|
cleanup(nsockets, sockets);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
FD_SET(sockets[i].fd, &fds);
|
FD_SET(sockets[i].fd, &fds);
|
||||||
|
}
|
||||||
ret = select(FD_SETSIZE, &fds, NULL, NULL, NULL);
|
ret = select(FD_SETSIZE, &fds, NULL, NULL, NULL);
|
||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
continue;
|
continue;
|
||||||
|
Reference in New Issue
Block a user