diff options
author | Marcel Telka <marcel.telka@nexenta.com> | 2014-04-03 21:32:25 +0200 |
---|---|---|
committer | Gordon Ross <gwr@nexenta.com> | 2014-04-30 20:53:37 -0400 |
commit | dff8cdb7c81be0916631bfe5b4384516b430227f (patch) | |
tree | 100ae1bc0d6ebac9d057055343ca006e102518a0 | |
parent | 19449258028e6813f0b7a606b554b2fa37a390ec (diff) | |
download | illumos-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.c | 17 |
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); } |