diff options
Diffstat (limited to 'source3/utils/smbfilter.c')
-rw-r--r-- | source3/utils/smbfilter.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/source3/utils/smbfilter.c b/source3/utils/smbfilter.c index 39a264011ee..a3ed657fd0c 100644 --- a/source3/utils/smbfilter.c +++ b/source3/utils/smbfilter.c @@ -170,8 +170,8 @@ static void filter_child(int c, struct sockaddr_storage *dest_ss) int num; FD_ZERO(&fds); - if (s != -1) FD_SET(s, &fds); - if (c != -1) FD_SET(c, &fds); + if (s >= 0 && s < FD_SETSIZE) FD_SET(s, &fds); + if (c >= 0 && c < FD_SETSIZE) FD_SET(c, &fds); num = sys_select_intr(MAX(s+1, c+1),&fds,NULL,NULL,NULL); if (num <= 0) continue; @@ -243,6 +243,10 @@ static void start_filter(char *desthost) struct sockaddr_storage ss; socklen_t in_addrlen = sizeof(ss); + if (s < 0 || s >= FD_SETSIZE) { + break; + } + FD_ZERO(&fds); FD_SET(s, &fds); |