summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAli Abdallah <ali.abdallah@suse.com>2022-07-14 13:47:32 -0400
committerSteve Dickson <steved@redhat.com>2022-07-16 14:16:42 -0400
commit63f3b9e883231ca08cf9c3cd8f5d582584412d94 (patch)
tree6799d615d103f7e681c66084263f0484ead08a63 /src
parent2d07cfd2f71b5ac05475b2ff79c4bf38f3b6ec5c (diff)
downloadti-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.c8
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);
}