summaryrefslogtreecommitdiffstats
path: root/sys/kern/uipc_syscalls.c
diff options
context:
space:
mode:
authorguido <guido@FreeBSD.org>1999-09-30 19:13:17 +0000
committerguido <guido@FreeBSD.org>1999-09-30 19:13:17 +0000
commit4a4f1cc7585921a0a996fae8e578d62e4682b951 (patch)
tree803f5c841038cb3c59b3b84ea6ec0846a1e501a5 /sys/kern/uipc_syscalls.c
parentcaea2233d5bd4987a92d18bc59e01781fcdcdd85 (diff)
downloadFreeBSD-src-4a4f1cc7585921a0a996fae8e578d62e4682b951.zip
FreeBSD-src-4a4f1cc7585921a0a996fae8e578d62e4682b951.tar.gz
Plug a potential filedescriptor leak. This will probably almost
never be triggered. Reviewed by: David Greenman
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 b87114d..8048cdb 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);
}
OpenPOWER on IntegriCloud