summaryrefslogtreecommitdiffstats
path: root/usr.sbin
diff options
context:
space:
mode:
authordwmalone <dwmalone@FreeBSD.org>2000-10-21 09:43:12 +0000
committerdwmalone <dwmalone@FreeBSD.org>2000-10-21 09:43:12 +0000
commitf0de0321e63d749dc5dd31921768b81e0c79eb9a (patch)
tree7faaef4f2bf9464a4c0cb3e07370df27c4aa651f /usr.sbin
parent92b7785b98b461c35eff8d4575667ddbcb465db8 (diff)
downloadFreeBSD-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.c3
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) {
OpenPOWER on IntegriCloud