summary refs log tree commit diff
path: root/resolv
diff options
context:
space:
mode:
Diffstat (limited to 'resolv')
-rw-r--r--resolv/gai_misc.c5
-rw-r--r--resolv/ns_print.c4
-rw-r--r--resolv/nsap_addr.c2
-rw-r--r--resolv/res_hconf.c13
4 files changed, 7 insertions, 17 deletions
diff --git a/resolv/gai_misc.c b/resolv/gai_misc.c
index b89abf984a..b3334f38ef 100644
--- a/resolv/gai_misc.c
+++ b/resolv/gai_misc.c
@@ -410,9 +410,7 @@ handle_requests (void *arg)
 
 
 /* Free allocated resources.  */
-static void
-__attribute__ ((unused))
-free_res (void)
+libc_freeres_fn (free_res)
 {
   size_t row;
 
@@ -421,4 +419,3 @@ free_res (void)
 
   free (pool);
 }
-text_set_element (__libc_subfreeres, free_res);
diff --git a/resolv/ns_print.c b/resolv/ns_print.c
index 7a2ef70efc..12b2e67ea6 100644
--- a/resolv/ns_print.c
+++ b/resolv/ns_print.c
@@ -309,7 +309,9 @@ ns_sprintrrf(const u_char *msg, size_t msglen,
 		break;
 
 	case ns_t_nsap: {
-		char t[255*3];
+		/* 2*255 for hex digits, 128 for '.' and '\0', 2 for
+		   0x if inet_nsap_ntoa starts using it.  */
+		char t[255*2 + 128 + 2];
 
 		(void) inet_nsap_ntoa(rdlen, rdata, t);
 		T(addstr(t, strlen(t), &buf, &buflen));
diff --git a/resolv/nsap_addr.c b/resolv/nsap_addr.c
index b3f2f77caf..7041e5282e 100644
--- a/resolv/nsap_addr.c
+++ b/resolv/nsap_addr.c
@@ -70,7 +70,7 @@ char *
 inet_nsap_ntoa(int binlen, const u_char *binary, char *ascii) {
 	int nib;
 	int i;
-	static char tmpbuf[255*3];
+	static char tmpbuf[255*2 + 128];
 	char *start;
 
 	if (ascii)
diff --git a/resolv/res_hconf.c b/resolv/res_hconf.c
index 132dda7599..40afeb0b94 100644
--- a/resolv/res_hconf.c
+++ b/resolv/res_hconf.c
@@ -489,6 +489,7 @@ _res_hconf_init (void)
 
 
 /* List of known interfaces.  */
+libc_freeres_ptr (
 static struct netaddr
 {
   int addrtype;
@@ -500,7 +501,7 @@ static struct netaddr
       u_int32_t	mask;
     } ipv4;
   } u;
-} *ifaddrs;
+} *ifaddrs);
 
 /* We need to protect the dynamic buffer handling.  */
 __libc_lock_define_initialized (static, lock);
@@ -657,13 +658,3 @@ _res_hconf_trim_domains (struct hostent *hp)
   for (i = 0; hp->h_aliases[i]; ++i)
     _res_hconf_trim_domain (hp->h_aliases[i]);
 }
-
-
-/* Free all resources if necessary.  */
-static void __attribute__ ((unused))
-free_mem (void)
-{
-  free (ifaddrs);
-}
-
-text_set_element (__libc_subfreeres, free_mem);