autofs-5.1.8 - fix memory leak in xdr_exports() From: Ian Kent Converting xdr_exports() to not be recursive introduced a memory leak if an error is encountered, fix it. Signed-off-by: Ian Kent --- CHANGELOG | 1 + lib/rpc_subs.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index f05c9c6b..9d57a21b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -11,6 +11,7 @@ - fix nfsv4 only mounts should not use rpcbind. - simplify cache_add() a little. - fix use after free in tree_mapent_delete_offset_tree(). +- fix memory leak in xdr_exports(). 19/10/2021 autofs-5.1.8 - add xdr_exports(). diff --git a/lib/rpc_subs.c b/lib/rpc_subs.c index ee7f94b9..0c833af0 100644 --- a/lib/rpc_subs.c +++ b/lib/rpc_subs.c @@ -1151,8 +1151,13 @@ bool_t xdr_exports(XDR *xdrs, struct exportinfo **exports) export = (char **) exports; while (1) { - if (!xdr_pointer(xdrs, export, size, (xdrproc_t) xdr_export)) + if (!xdr_pointer(xdrs, export, size, (xdrproc_t) xdr_export)) { + if (*exports) { + rpc_exports_free(*exports); + *exports = NULL; + } return FALSE; + } if (!*export) break; export = (char **) &((struct exportinfo *) *export)->next;