@@ -89,8 +89,8 @@ void setlimits()
#ifndef __sun__
setrlimit(RLIMIT_NPROC, &plim);
#endif
- fdlim.rlim_cur = 300;
- fdlim.rlim_max = 300;
+ fdlim.rlim_cur = MAX_SOCKETS;
+ fdlim.rlim_max = MAX_SOCKETS;
setrlimit(RLIMIT_NOFILE, &fdlim);
#endif /* !CYGWIN_HACKS */
}
@@ -27,6 +27,8 @@
#define HANDLEN 9 /* valid values 9->NICKMAX */
#define NICKMAX 32 /* valid values HANDLEN->32 */
+#define MAX_SOCKETS 300
+
/* Handy string lengths */
@@ -440,6 +440,9 @@ int shell_exec(char *cmdline, char *input, char **output, char **erroutput, bool
while (mycmdline[0] && (p = newsplit(&mycmdline)))
argv[n++] = p;
argv[n] = NULL;
+ // Close all sockets
+ for (int fd = 3; fd < MAX_SOCKETS; ++fd) close(fd);
} else {
argv[0] = "/bin/sh";
argv[1] = "-c";
@@ -461,6 +464,8 @@ int simple_exec(const char* argv[]) {
case -1:
break;
case 0: //child
execv(argv[0], (char* const*) &argv[0]);
_exit(127);
default: //parent