[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