On Fri, 2018-09-07 at 14:01 -0400, Steve Dickson wrote: > Variable "ct" going out of scope leaks the storage it points to. > > Signed-off-by: Steve Dickson <steved@xxxxxxxxxx> > --- > src/clnt_vc.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/src/clnt_vc.c b/src/clnt_vc.c > index 3d775c7..10ee91a 100644 > --- a/src/clnt_vc.c > +++ b/src/clnt_vc.c > @@ -325,6 +325,8 @@ clnt_vc_create(fd, raddr, prog, vers, sendsz, recvsz) > recvsz = __rpc_get_t_size(si.si_af, si.si_proto, (int)recvsz); > xdrrec_create(&(ct->ct_xdrs), sendsz, recvsz, > cl->cl_private, read_vc, write_vc); > + mem_free(ct->ct_addr.buf, ct->ct_addr.len); > + mem_free(ct, sizeof (struct ct_data)); > return (cl); > > err: Are you sure about this one Steve? aka: /* * Create a client handle which uses xdrrec for serialization * and authnone for authentication. */ cl->cl_ops = clnt_vc_ops(); cl->cl_private = ct; <------? cl->cl_auth = authnone_create(); sendsz = __rpc_get_t_size(si.si_af, si.si_proto, (int)sendsz); recvsz = __rpc_get_t_size(si.si_af, si.si_proto, (int)recvsz); xdrrec_create(&(ct->ct_xdrs), sendsz, recvsz, cl->cl_private, read_vc, write_vc); return (cl);