Re: gssd: fix memory leak in gssd_free_client
Steve Dickson <[email protected]> Thu, 23 Jul 2026 08:26:34 -0400
| Newsgroups | org.kernel.vger.linux-nfs |
|---|---|
| Message-ID | <[email protected]> |
On 7/14/26 4:42 AM, zhangjian (CG) wrote: > clp->servername is always not null, so upcall_* is never free. > > Signed-off-by: zhangjian <[email protected]> Committed... (tag: nfs-utils-2-9-2-rc6) steved. > --- > utils/gssd/gssd.c | 24 ++++++++++++++---------- > 1 file changed, 14 insertions(+), 10 deletions(-) > > diff --git a/utils/gssd/gssd.c b/utils/gssd/gssd.c > index 1c901991..bad92321 100644 > --- a/utils/gssd/gssd.c > +++ b/utils/gssd/gssd.c > @@ -360,6 +360,10 @@ gssd_read_service_info(int dirfd, struct clnt_info *clp) > clp->prog = program; > clp->vers = version; > clp->protocol = protoname; > + clp->upcall_address = NULL; > + clp->upcall_port = NULL; > + clp->upcall_protoname = NULL; > + clp->upcall_service = NULL; > > goto out; > > @@ -414,16 +418,16 @@ gssd_free_client(struct clnt_info *clp) > free(clp->servicename); > free(clp->servername); > free(clp->protocol); > - if (!clp->servername) { > - if (clp->upcall_address) > - free(clp->upcall_address); > - if (clp->upcall_port) > - free(clp->upcall_port); > - if (clp->upcall_protoname) > - free(clp->upcall_protoname); > - if (clp->upcall_service) > - free(clp->upcall_service); > - } > + > + if (clp->upcall_address) > + free(clp->upcall_address); > + if (clp->upcall_port) > + free(clp->upcall_port); > + if (clp->upcall_protoname) > + free(clp->upcall_protoname); > + if (clp->upcall_service) > + free(clp->upcall_service); > + > free(clp); > } >