aboutsummaryrefslogtreecommitdiff
path: root/sys/kern/uipc_syscalls.c
diff options
context:
space:
mode:
authorGuido van Rooij <guido@FreeBSD.org>1999-09-30 19:13:17 +0000
committerGuido van Rooij <guido@FreeBSD.org>1999-09-30 19:13:17 +0000
commitbdf7fdcb6f950aea92ec4e51204c7ca62d71ef43 (patch)
tree23d1d8a26850d27c2b5e44a94d4c6d35c06a0ef9 /sys/kern/uipc_syscalls.c
parenta76245d21d20a0db36f498cf01af3e3cc2d009ad (diff)
downloadsrc-bdf7fdcb6f950aea92ec4e51204c7ca62d71ef43.tar.gz
src-bdf7fdcb6f950aea92ec4e51204c7ca62d71ef43.zip
Plug a potential filedescriptor leak. This will probably almost
never be triggered. Reviewed by: David Greenman
Notes
Notes: svn path=/head/; revision=51824
Diffstat (limited to 'sys/kern/uipc_syscalls.c')
-rw-r--r--sys/kern/uipc_syscalls.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c
index b87114dcd579..8048cdb8e18a 100644
--- a/sys/kern/uipc_syscalls.c
+++ b/sys/kern/uipc_syscalls.c
@@ -185,6 +185,7 @@ accept1(p, uap, compat)
} */ *uap;
int compat;
{
+ struct filedesc *fdp = p->p_fd;
struct file *fp;
struct sockaddr *sa;
int namelen, error, s;
@@ -198,7 +199,7 @@ accept1(p, uap, compat)
if(error)
return (error);
}
- error = getsock(p->p_fd, uap->s, &fp);
+ error = getsock(fdp, uap->s, &fp);
if (error)
return (error);
s = splnet();
@@ -292,6 +293,10 @@ gotnoname:
}
if (sa)
FREE(sa, M_SONAME);
+ if (error) {
+ fdp->fd_ofiles[fd] = 0;
+ ffree(fp);
+ }
splx(s);
return (error);
}