summaryrefslogtreecommitdiff
path: root/source3/utils/smbfilter.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/utils/smbfilter.c')
-rw-r--r--source3/utils/smbfilter.c8
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);