From 80e6485455a9c75c029d0e976d2dd9c8e441dd72 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Fri, 5 Sep 2014 02:50:38 -0400 Subject: [PATCH] remove an extra layer of buffer copying in getnameinfo reverse dns the outer getnameinfo function already has a properly-sized temporary buffer for storing the reverse dns (ptr) result. there is no reason for the callback to use a secondary buffer and copy it on success, and doing so potentially expanded the impact of the dn_expand bug that was fixed in commit 49d2c8c6bcf8c926e52c7f510033b6adc31355f5. this change reduces the code size by a small amount, and also reduces the run-time stack space requirements by about 256 bytes. --- src/network/getnameinfo.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/network/getnameinfo.c b/src/network/getnameinfo.c index 588ed765..2ba66e33 100644 --- a/src/network/getnameinfo.c +++ b/src/network/getnameinfo.c @@ -113,11 +113,10 @@ static void reverse_services(char *buf, int port, int dgram) static int dns_parse_callback(void *c, int rr, const void *data, int len, const void *packet) { - char tmp[256]; if (rr != RR_PTR) return 0; if (__dn_expand(packet, (const unsigned char *)packet + 512, - data, tmp, sizeof tmp) > 0) - strcpy(c, tmp); + data, c, 256) <= 0) + *(char *)c = 0; return 0; }