diff options
author | dwmalone <dwmalone@FreeBSD.org> | 2000-10-21 09:43:12 +0000 |
---|---|---|
committer | dwmalone <dwmalone@FreeBSD.org> | 2000-10-21 09:43:12 +0000 |
commit | f0de0321e63d749dc5dd31921768b81e0c79eb9a (patch) | |
tree | 7faaef4f2bf9464a4c0cb3e07370df27c4aa651f /usr.sbin | |
parent | 92b7785b98b461c35eff8d4575667ddbcb465db8 (diff) | |
download | FreeBSD-src-f0de0321e63d749dc5dd31921768b81e0c79eb9a.zip FreeBSD-src-f0de0321e63d749dc5dd31921768b81e0c79eb9a.tar.gz |
Don't leak a file discriptor if a service we've called accept() for
loops.
Submitted by: Ian Dowse <iedowse@maths.tcd.ie>
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/inetd/inetd.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/usr.sbin/inetd/inetd.c b/usr.sbin/inetd/inetd.c index 486348c..b1582f0 100644 --- a/usr.sbin/inetd/inetd.c +++ b/usr.sbin/inetd/inetd.c @@ -604,6 +604,9 @@ main(argc, argv, envp) syslog(LOG_ERR, "%s/%s server failing (looping), service terminated", sep->se_service, sep->se_proto); + if (sep->se_accept && + sep->se_socktype == SOCK_STREAM) + close(ctrl); close_sep(sep); sigsetmask(0L); if (!timingout) { |