summaryrefslogtreecommitdiffstats
path: root/source/utils/smbfilter.c
diff options
context:
space:
mode:
Diffstat (limited to 'source/utils/smbfilter.c')
-rw-r--r--source/utils/smbfilter.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/source/utils/smbfilter.c b/source/utils/smbfilter.c
index 1e22a402013..45f92079a5f 100644
--- a/source/utils/smbfilter.c
+++ b/source/utils/smbfilter.c
@@ -162,8 +162,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;
@@ -235,6 +235,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);