[Dnsmasq-discuss] [PATCH] free() after use

Petr Menšík pemensik at redhat.com
Mon Jul 11 10:32:26 UTC 2022


Correct, I have seen such warning on Fedora 36 too. While technically it 
does not try to use any content of freed pointer, just a pointer value. 
But worth fixing it, consider it a vote from me as well.

But it seems to me we want here just whine_realloc() introduced. It 
would make it slightly more efficient.

On 22. 06. 22 11:05, Geert Stappers via Dnsmasq-discuss wrote:
> Because  GCC 12.1 did report:
>    cache.c: In function ‘cache_make_stat’:
>    cache.c:1683:30: warning: pointer used after ‘free’ [-Wuse-after-free]
>     1683 |                 p = new + (p - buff);
>          |                           ~~~^~~~~~~
>    cache.c:1682:17: note: call to ‘free’ here
>     1682 |                 free(buff);
>          |                 ^~~~~~~~~~
> ---
>   src/cache.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/src/cache.c b/src/cache.c
> index a99d70d..e221afd 100644
> --- a/src/cache.c
> +++ b/src/cache.c
> @@ -1679,8 +1679,8 @@ int cache_make_stat(struct txt_record *t)
>   		if (!(new = whine_malloc(newlen)))
>   		  return 0;
>   		memcpy(new, buff, bufflen);
> -		free(buff);
>   		p = new + (p - buff);
> +		free(buff);
>   		lenp = p - 1;
>   		buff = new;
>   		bufflen = newlen;

-- 
Petr Menšík
Software Engineer, RHEL
Red Hat, http://www.redhat.com/
PGP: DFCF908DB7C87E8E529925BC4931CA5B6C9FC5CB




More information about the Dnsmasq-discuss mailing list