diff options
author | 1999-06-07 01:40:01 +0000 | |
---|---|---|
committer | 1999-06-07 01:40:01 +0000 | |
commit | ad66ca53938a94710cc07f207cd4a4cb6491f2ef (patch) | |
tree | 3a01c73c18113da7199c0c83cb4555f16d75d609 | |
parent | store NULL in fd_ofiles (diff) | |
download | wireguard-openbsd-ad66ca53938a94710cc07f207cd4a4cb6491f2ef.tar.xz wireguard-openbsd-ad66ca53938a94710cc07f207cd4a4cb6491f2ef.zip |
do not leak file descriptors if copyout() fails
-rw-r--r-- | sys/kern/uipc_syscalls.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c index ffc0ee9fa7a..cff7ebce68b 100644 --- a/sys/kern/uipc_syscalls.c +++ b/sys/kern/uipc_syscalls.c @@ -1,4 +1,4 @@ -/* $OpenBSD: uipc_syscalls.c,v 1.20 1999/06/07 01:38:44 deraadt Exp $ */ +/* $OpenBSD: uipc_syscalls.c,v 1.21 1999/06/07 01:40:01 deraadt Exp $ */ /* $NetBSD: uipc_syscalls.c,v 1.19 1996/02/09 19:00:48 christos Exp $ */ /* @@ -324,7 +324,8 @@ sys_socketpair(p, v, retval) } error = copyout((caddr_t)sv, (caddr_t)SCARG(uap, rsv), 2 * sizeof (int)); - return (error); + if (error == 0) + return (error); free4: ffree(fp2); fdp->fd_ofiles[sv[1]] = NULL; |