summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcel Telka <marcel.telka@nexenta.com>2014-04-03 21:32:25 +0200
committerGordon Ross <gwr@nexenta.com>2014-04-30 20:53:37 -0400
commitdff8cdb7c81be0916631bfe5b4384516b430227f (patch)
tree100ae1bc0d6ebac9d057055343ca006e102518a0
parent19449258028e6813f0b7a606b554b2fa37a390ec (diff)
downloadillumos-joyent-dff8cdb7c81be0916631bfe5b4384516b430227f.tar.gz
4724 Possible memory leak in _clnt_vc_create_timed()
Reviewed by: Andy Stormont <AStormont@racktopsystems.com> Reviewed by: Dan McDonald <danmcd@omniti.com> Approved by: Gordon Ross <gwr@nexenta.com>
-rw-r--r--usr/src/lib/libnsl/rpc/clnt_vc.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/usr/src/lib/libnsl/rpc/clnt_vc.c b/usr/src/lib/libnsl/rpc/clnt_vc.c
index 671adaada6..0c0fb01037 100644
--- a/usr/src/lib/libnsl/rpc/clnt_vc.c
+++ b/usr/src/lib/libnsl/rpc/clnt_vc.c
@@ -240,7 +240,9 @@ _clnt_vc_create_timed(int fd, struct netbuf *svcaddr, rpcprog_t prog,
int flag;
cl = malloc(sizeof (*cl));
- ct = malloc(sizeof (*ct));
+ if ((ct = malloc(sizeof (*ct))) != NULL)
+ ct->ct_addr.buf = NULL;
+
if ((cl == NULL) || (ct == NULL)) {
(void) syslog(LOG_ERR, clnt_vc_errstr,
clnt_vc_str, __no_mem_str);
@@ -249,7 +251,6 @@ _clnt_vc_create_timed(int fd, struct netbuf *svcaddr, rpcprog_t prog,
rpc_createerr.cf_error.re_terrno = 0;
goto err;
}
- ct->ct_addr.buf = NULL;
/*
* The only use of vctbl_lock is for serializing the creation of
@@ -366,14 +367,12 @@ _clnt_vc_create_timed(int fd, struct netbuf *svcaddr, rpcprog_t prog,
return (cl);
err:
- if (cl) {
- if (ct) {
- if (ct->ct_addr.len)
- free(ct->ct_addr.buf);
- free(ct);
- }
- free(cl);
+ if (ct) {
+ free(ct->ct_addr.buf);
+ free(ct);
}
+ free(cl);
+
return (NULL);
}