diff options
author | Ali Abdallah <ali.abdallah@suse.com> | 2022-07-14 13:47:32 -0400 |
---|---|---|
committer | Steve Dickson <steved@redhat.com> | 2022-07-16 14:16:42 -0400 |
commit | 63f3b9e883231ca08cf9c3cd8f5d582584412d94 (patch) | |
tree | 6799d615d103f7e681c66084263f0484ead08a63 /src | |
parent | 2d07cfd2f71b5ac05475b2ff79c4bf38f3b6ec5c (diff) | |
download | ti-rpc-63f3b9e883231ca08cf9c3cd8f5d582584412d94.tar.gz |
Fix potential memory leak of parms.r_addr
During some valgrind test, the following is observed
==11391== 64 bytes in 4 blocks are definitely lost in loss record 11 of 16
==11391== at 0x4C2A2AF: malloc (in /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==11391== by 0x50ECED9: strdup (in /lib64/libc-2.22.so)
==11391== by 0x4E4AFBF: getclnthandle (in /lib64/libtirpc.so.3.0.0)
==11391== by 0x4E4BD8A: __rpcb_findaddr_timed (in /lib64/libtirpc.so.3.0.0)
==11391== by 0x4E443AF: clnt_tp_create_timed (in /lib64/libtirpc.so.3.0.0)
==11391== by 0x4E44580: clnt_create_timed (in /lib64/libtirpc.so.3.0.0)
==11391== by 0x400755: main (in /local/02/xdtadti/tirpc-test/client)
Signed-off-by: Steve Dickson <steved@redhat.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/rpcb_clnt.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/rpcb_clnt.c b/src/rpcb_clnt.c index 0c34cb7..1a23cb1 100644 --- a/src/rpcb_clnt.c +++ b/src/rpcb_clnt.c @@ -798,6 +798,10 @@ __try_protocol_version_2(program, version, nconf, host, tp) pmapaddress->len = pmapaddress->maxlen = remote.len; CLNT_DESTROY(client); + + if (parms.r_addr != NULL && parms.r_addr != nullstring) + free(parms.r_addr); + return pmapaddress; error: @@ -806,6 +810,10 @@ error: client = NULL; } + + if (parms.r_addr != NULL && parms.r_addr != nullstring) + free(parms.r_addr); + return (NULL); } |