Date: Sun, 28 Dec 2003 18:21:09 +0000 (UTC) From: "Bjoern A. Zeeb" <bzeeb-lists@lists.zabbadoz.net> To: David Malone <dwmalone@maths.tcd.ie> Cc: freebsd-current@freebsd.org Subject: Re: file descriptor leak in 5.2-RC Message-ID: <Pine.BSF.4.53.0312281815210.21415@e0-0.zab2.int.zabbadoz.net> In-Reply-To: <20031228180536.GA49762@walton.maths.tcd.ie> References: <20031227205000.GG86308@e-Gitt.NET> <1035.1072561906@critter.freebsd.dk> <20031228180536.GA49762@walton.maths.tcd.ie>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 28 Dec 2003, David Malone wrote: > > I'd call it a surprise if someone after all had a fix within the next 10 > > hours or so. > > I'm fairly certain I've found the problem (and, indeed, it looks > like I introduced it too while changing how falloc works). You loose > a reference to /dev/null every time you exec a suid program with > at least one of std{in,out,err} closed. I'm guessing that some part > of postfix does this. > > I believe the patch below will fix the problem. I guess I'm too > late for you to test it now? I think it's the correct place... I could not reproduce the problem on a machine with a kernel from late september. Ok, now that we have the patch I can also send a simple program to test it out to the list ... Be aware that local users can eat a lot of fds with that ... on current and 5.2-prereleases --- end --- cat > exec-closed123-ping.c <<EOF #include <unistd.h> #ifndef MAX_CHILDS #define MAX_CHILDS 16 #endif static int _execsetuid() { execl("/sbin/ping", "-c", "1", "localhost", NULL); return 1; } int main(int argc, char *argv[]) { int i = 0; pid_t pid; (void) close(0); (void) close(1); (void) close(2); while (i++ < MAX_CHILDS) { pid = fork(); switch (pid) { case 0: _exit(_execsetuid()); } } return 0; } EOF gcc -Wall exec-closed123-ping.c -o exec-closed123-ping sysctl kern.openfiles ./exec-closed123-ping sysctl kern.openfiles --- end --- there should be a difference of 16 in kern.openfiles. -- Bjoern A. Zeeb bzeeb at Zabbadoz dot NeT 56 69 73 69 74 http://www.zabbadoz.net/
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?Pine.BSF.4.53.0312281815210.21415>