--- 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 #include #include +#include #include #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);