diff --git a/SOURCES/libtirpc-1.1.4-double-free.patch b/SOURCES/libtirpc-1.1.4-double-free.patch new file mode 100644 index 0000000..a869b43 --- /dev/null +++ b/SOURCES/libtirpc-1.1.4-double-free.patch @@ -0,0 +1,32 @@ +commit 1d2e10afb2ffc35cb3623f57a15f712359f18e75 +Author: Herb Wartens +Date: Tue Aug 1 10:36:16 2023 -0400 + + rpcb_clnt.c: Eliminate double frees in delete_cache() + + Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2224666 + Signed-off-by: Steve Dickson + +diff --git a/src/rpcb_clnt.c b/src/rpcb_clnt.c +index c0a9e12..68fe69a 100644 +--- a/src/rpcb_clnt.c ++++ b/src/rpcb_clnt.c +@@ -262,12 +262,15 @@ delete_cache(addr) + for (cptr = front; cptr != NULL; cptr = cptr->ac_next) { + if (!memcmp(cptr->ac_taddr->buf, addr->buf, addr->len)) { + /* Unlink from cache. We'll destroy it after releasing the mutex. */ +- if (cptr->ac_uaddr) ++ if (cptr->ac_uaddr) { + free(cptr->ac_uaddr); +- if (prevptr) ++ cptr->ac_uaddr = NULL; ++ } ++ if (prevptr) { + prevptr->ac_next = cptr->ac_next; +- else ++ } else { + front = cptr->ac_next; ++ } + cachesize--; + break; + } diff --git a/SOURCES/libtirpc-1.1.4-null-ptrs-not-reused.patch b/SOURCES/libtirpc-1.1.4-null-ptrs-not-reused.patch new file mode 100644 index 0000000..f2fc9f2 --- /dev/null +++ b/SOURCES/libtirpc-1.1.4-null-ptrs-not-reused.patch @@ -0,0 +1,48 @@ +commit 89c63bdfd79b1c94384daaaa03a9e3582540f843 +Author: Herb Wartens +Date: Tue Aug 1 10:21:42 2023 -0400 + + rpcb_clnt.c: memory leak in destroy_addr + + Null pointers so they are not used again + + Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2225226 + Signed-off-by: Steve Dickson + +diff --git a/src/rpcb_clnt.c b/src/rpcb_clnt.c +index d178d86..c0a9e12 100644 +--- a/src/rpcb_clnt.c ++++ b/src/rpcb_clnt.c +@@ -104,17 +104,27 @@ destroy_addr(addr) + { + if (addr == NULL) + return; +- if(addr->ac_host != NULL) ++ if (addr->ac_host != NULL) { + free(addr->ac_host); +- if(addr->ac_netid != NULL) ++ addr->ac_host = NULL; ++ } ++ if (addr->ac_netid != NULL) { + free(addr->ac_netid); +- if(addr->ac_uaddr != NULL) ++ addr->ac_netid = NULL; ++ } ++ if (addr->ac_uaddr != NULL) { + free(addr->ac_uaddr); +- if(addr->ac_taddr != NULL) { +- if(addr->ac_taddr->buf != NULL) ++ addr->ac_uaddr = NULL; ++ } ++ if (addr->ac_taddr != NULL) { ++ if(addr->ac_taddr->buf != NULL) { + free(addr->ac_taddr->buf); ++ addr->ac_taddr->buf = NULL; ++ } ++ addr->ac_taddr = NULL; + } + free(addr); ++ addr = NULL; + } + + /* diff --git a/SPECS/libtirpc.spec b/SPECS/libtirpc.spec index a259868..0c1c586 100644 --- a/SPECS/libtirpc.spec +++ b/SPECS/libtirpc.spec @@ -2,7 +2,7 @@ Name: libtirpc Version: 1.1.4 -Release: 8%{?dist} +Release: 10%{?dist} Summary: Transport Independent RPC Library Group: System Environment/Libraries License: SISSL and BSD @@ -47,6 +47,12 @@ Patch008: libtirpc-1.1.4-v2proto-mech.patch # bz 2112116 Patch009: libtirpc-1.1.4-multithr-cleanup.patch +# +# RHEL 8.10 +# +Patch010: libtirpc-1.1.4-null-ptrs-not-reused.patch +Patch011: libtirpc-1.1.4-double-free.patch + BuildRequires: automake, autoconf, libtool, pkgconfig BuildRequires: krb5-devel @@ -166,6 +172,12 @@ mv %{buildroot}%{_mandir}/man3 %{buildroot}%{_mandir}/man3t %{_mandir}/*/* %changelog +* Tue Mar 5 2024 Steve Dickson 1.1.4-10 +- rpcb_clnt.c: Eliminate double frees in delete_cache() (RHEL-11293) + +* Mon Mar 4 2024 Steve Dickson 1.1.4-9 +- Null pointers so they are not used again (RHEL-11370) + * Wed Aug 3 2022 Steve Dickson 1.1.4-8 - rpcb_clnt.c add mechanism to try v2 protocol first (bz 2107650) - Multithreaded cleanup (bz 2112116)