2023-08-01 15:34:48

by Steve Dickson

[permalink] [raw]
Subject: [PATCH 1/2] rpcb_clnt.c: memory leak in destroy_addr

From: Herb Wartens <[email protected]>

Null pointers so they are not used again

Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2225226
Signed-off-by: Steve Dickson <[email protected]>
---
src/rpcb_clnt.c | 20 +++++++++++++++-----
1 file changed, 15 insertions(+), 5 deletions(-)

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;
}

/*
--
2.41.0



2023-08-07 11:22:25

by Steve Dickson

[permalink] [raw]
Subject: Re: [Libtirpc-devel] [PATCH 1/2] rpcb_clnt.c: memory leak in destroy_addr



On 8/1/23 10:42 AM, Steve Dickson wrote:
> From: Herb Wartens <[email protected]>
>
> Null pointers so they are not used again
>
> Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2225226
> Signed-off-by: Steve Dickson <[email protected]>
Committed... (tag: libtirpc-1-3-4-rc2)

steved
> ---
> src/rpcb_clnt.c | 20 +++++++++++++++-----
> 1 file changed, 15 insertions(+), 5 deletions(-)
>
> 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;
> }
>
> /*