summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-libs/libtirpc/files/libtirpc-1.3.2-memory-leak.patch')
-rw-r--r--net-libs/libtirpc/files/libtirpc-1.3.2-memory-leak.patch52
1 files changed, 52 insertions, 0 deletions
diff --git a/net-libs/libtirpc/files/libtirpc-1.3.2-memory-leak.patch b/net-libs/libtirpc/files/libtirpc-1.3.2-memory-leak.patch
new file mode 100644
index 000000000000..8ce864a2950c
--- /dev/null
+++ b/net-libs/libtirpc/files/libtirpc-1.3.2-memory-leak.patch
@@ -0,0 +1,52 @@
+From 63f3b9e883231ca08cf9c3cd8f5d582584412d94 Mon Sep 17 00:00:00 2001
+From: Ali Abdallah <ali.abdallah@suse.com>
+Date: Thu, 14 Jul 2022 13:47:32 -0400
+Subject: [PATCH] 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>
+---
+ INSTALL | 369 +-------------------------------------------------------
+ src/rpcb_clnt.c | 8 ++
+ 2 files changed, 9 insertions(+), 368 deletions(-)
+ mode change 100644 => 120000 INSTALL
+
+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);
+
+ }
+--
+1.8.3.1
+