summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorngie <ngie@FreeBSD.org>2016-01-12 00:20:57 +0000
committerngie <ngie@FreeBSD.org>2016-01-12 00:20:57 +0000
commit1777eef1bc91505b28fec91c8b36d490da70fb75 (patch)
tree954b5128bcae2470289a86aad61cb793fdb64dc9 /lib
parent32d35b580554bc1e68ac769acdc612e3dd67bb12 (diff)
downloadFreeBSD-src-1777eef1bc91505b28fec91c8b36d490da70fb75.zip
FreeBSD-src-1777eef1bc91505b28fec91c8b36d490da70fb75.tar.gz
Fix a mismerge from NetBSD in r162194 with `xdr_rpcb_entry_list_ptr(..)`
This fixes the potential NULL pointer dereference properly, and also fixes memory leaks encountered in the process of iterating through `*rp`. MFC after: 1 week Found by: Valgrind Reported by: Dan Roberts <dan.roberts@isilon.com> Submitted by: Miles Ohlrich <miles.ohlrich@isilon.com> Sponsored by: EMC / Isilon Storage Division
Diffstat (limited to 'lib')
-rw-r--r--lib/libc/rpc/rpcb_prot.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/libc/rpc/rpcb_prot.c b/lib/libc/rpc/rpcb_prot.c
index b793eca..2b87f34 100644
--- a/lib/libc/rpc/rpcb_prot.c
+++ b/lib/libc/rpc/rpcb_prot.c
@@ -207,14 +207,14 @@ xdr_rpcb_entry_list_ptr(XDR *xdrs, rpcb_entry_list_ptr *rp)
* the case of freeing we must remember the next object
* before we free the current object ...
*/
- if (freeing)
+ if (freeing && *rp)
next = (*rp)->rpcb_entry_next;
if (! xdr_reference(xdrs, (caddr_t *)rp,
(u_int)sizeof (rpcb_entry_list),
(xdrproc_t)xdr_rpcb_entry)) {
return (FALSE);
}
- if (freeing && *rp) {
+ if (freeing) {
next_copy = next;
rp = &next_copy;
/*
OpenPOWER on IntegriCloud