From: Venkatesh Srinivas Date: Sat, 24 Sep 2011 18:02:48 +0000 (-0700) Subject: sys_socketpair: Free socketpair file descriptors if copyout() fails. X-Git-Tag: v2.12.0~15 X-Git-Url: https://gitweb.dragonflybsd.org/dragonfly.git/commitdiff_plain/8b8ad3364067a0c4a6471fcdb98593e563ab6d31 sys_socketpair: Free socketpair file descriptors if copyout() fails. --- diff --git a/sys/kern/uipc_syscalls.c b/sys/kern/uipc_syscalls.c index 4950a4cc7d..616a3dd6b1 100644 --- a/sys/kern/uipc_syscalls.c +++ b/sys/kern/uipc_syscalls.c @@ -620,8 +620,6 @@ free1: /* * socketpair(int domain, int type, int protocol, int *rsv) - * - * MPALMOSTSAFE */ int sys_socketpair(struct socketpair_args *uap) @@ -630,8 +628,15 @@ sys_socketpair(struct socketpair_args *uap) error = kern_socketpair(uap->domain, uap->type, uap->protocol, sockv); - if (error == 0) + if (error == 0) { error = copyout(sockv, uap->rsv, sizeof(sockv)); + + if (error != 0) { + kern_close(sockv[0]); + kern_close(sockv[1]); + } + } + return (error); }