Hi,

On 3/17/24 9:38 AM, Geert Stappers wrote:
From: Brian Haley <haleyb....@gmail.com>

When a new IPv6 address is being added to a dhcp_config
struct, if there is anything invalid regarding the prefix
it looks like there is a potential memory leak.
ret_err_free() should be used to free it.

Signed-off-by: Brian Haley <haleyb....@gmail.com>
---
  src/option.c | 2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/option.c b/src/option.c
index f4ff7c0..db758ce 100644
--- a/src/option.c
+++ b/src/option.c
@@ -4034,7 +4034,7 @@ static int one_opt(int option, char *arg, char *errstr, 
char *gen_err, int comma
                            ((((u64)1<<(128-new_addr->prefixlen))-1) & 
addrpart) != 0)
                          {
                            dhcp_config_free(new);
-                           ret_err(_("bad IPv6 prefix"));
+                           ret_err_free(_("bad IPv6 prefix"), new_addr);
                          }
                        
                        new_addr->flags |= ADDRLIST_PREFIX;

Nak.

I don't believe this stands on it's own - new_addr has been linked into the list by this point, so freeing it could cause other issues like invalid memory references. My original submission moved that operation until later in the function to avoid this, so I would rather see that version merged.

Thanks,

-Brian

_______________________________________________
Dnsmasq-discuss mailing list
Dnsmasq-discuss@lists.thekelleys.org.uk
https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss

Reply via email to