summaryrefslogtreecommitdiff
blob: 3bcd54c1f949faf75f8905ce24ffa1756ec00cfc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
--- relay-ctrl-3.1.1/relay-ctrl-chdir.c	2002-04-26 18:07:38.000000000 +0200
+++ relay-ctrl-3.1.1-patch/relay-ctrl-chdir.c	2010-12-08 20:49:15.449915704 +0100
@@ -2,6 +2,7 @@
 #include <fcntl.h>
 #include <stdlib.h>
 #include <sys/stat.h>
+#include <sys/resource.h>
 #include <unistd.h>
 #include "misc/misc.h"
 #include "msg/msg.h"
@@ -14,9 +15,12 @@
 static int move_high(int fd)
 {
   struct stat s;
+  struct rlimit rl;
   int newfd;
-
-  for (newfd = fd + 1;; ++newfd) {
+  
+  getrlimit(RLIMIT_NOFILE, &rl);
+  
+  for (newfd = fd + 1; newfd < rl.rlim_cur; ++newfd) {
     if (fstat(newfd, &s) != -1) continue;
     if (dup2(fd, newfd) == -1) break;
     close(fd);