[Dnsmasq-discuss] cache.c:1683:30: warning: pointer used after ‘free’

Geert Stappers stappers at stappers.nl
Wed Jun 22 08:23:43 UTC 2022



Hello,


With  GCC version 12.1  I do get:

cc -Wall -W -O2   -DVERSION='"2.87test8-16-g770bce9"'             -c cache.c	
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);
      |                 ^~~~~~~~~~


Lines 1682 and 1683 in context:

$ awk '{ print NR, $0 }' src/cache.c | sed --silent -e '1675,1689p'
1675 	    if (bytes_needed >= bytes_avail)
1676 	      {
1677 		/* expand buffer if necessary */
1678 		newlen = bytes_needed + 1 + bufflen - bytes_avail;
1679 		if (!(new = whine_malloc(newlen)))
1680 		  return 0;
1681 		memcpy(new, buff, bufflen);
1682 		free(buff);
1683 		p = new + (p - buff);
1684 		lenp = p - 1;
1685 		buff = new;
1686 		bufflen = newlen;
1687 		bytes_avail =  bufflen - (p - buff );
1688 		bytes_needed = snprintf(p, bytes_avail, "%s#%d %u %u", daemon->addrbuff, port, queries, failed_queries);
1689 	      }



Patch is  work in progress.



Groeten
Geert Stappers
-- 
Silence is hard to parse



More information about the Dnsmasq-discuss mailing list