summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authormbr <mbr@FreeBSD.org>2006-09-09 22:33:21 +0000
committermbr <mbr@FreeBSD.org>2006-09-09 22:33:21 +0000
commit283bae6f03b4b075d5a19a967a0c24cebd000a19 (patch)
treefd99e4454002bf73afb9af4d73b7c76a93b6ae07 /lib
parent958b62e8daf4269fd0d432cbd9206f879c7f7528 (diff)
downloadFreeBSD-src-283bae6f03b4b075d5a19a967a0c24cebd000a19.zip
FreeBSD-src-283bae6f03b4b075d5a19a967a0c24cebd000a19.tar.gz
Sync with NetBSD rev. 1.16 + 1.17
Coverity CID 2292: Plug memory leak. Coverity CID 2291: Move function call before allocating storage to prevent memory leak on error. MFC after: 1 month
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/rpc/svc_vc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/libc/rpc/svc_vc.c b/lib/libc/rpc/svc_vc.c
index 50c6651..6fcbb21 100644
--- a/lib/libc/rpc/svc_vc.c
+++ b/lib/libc/rpc/svc_vc.c
@@ -135,13 +135,14 @@ svc_vc_create(fd, sendsize, recvsize)
struct sockaddr_storage sslocal;
socklen_t slen;
+ if (!__rpc_fd2sockinfo(fd, &si))
+ return NULL;
+
r = mem_alloc(sizeof(*r));
if (r == NULL) {
warnx("svc_vc_create: out of memory");
goto cleanup_svc_vc_create;
}
- if (!__rpc_fd2sockinfo(fd, &si))
- return NULL;
r->sendsize = __rpc_get_t_size(si.si_af, si.si_proto, (int)sendsize);
r->recvsize = __rpc_get_t_size(si.si_af, si.si_proto, (int)recvsize);
r->maxrec = __svc_maxrec;
@@ -177,6 +178,8 @@ svc_vc_create(fd, sendsize, recvsize)
xprt_register(xprt);
return (xprt);
cleanup_svc_vc_create:
+ if (xprt)
+ mem_free(xprt, sizeof(*xprt));
if (r != NULL)
mem_free(r, sizeof(*r));
return (NULL);
OpenPOWER on IntegriCloud