]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
CVE-2016-3075: Stack overflow in _nss_dns_getnetbyname_r [BZ #19879]
authorFlorian Weimer <fweimer@redhat.com>
Tue, 29 Mar 2016 10:57:56 +0000 (12:57 +0200)
committerMike Frysinger <vapier@gentoo.org>
Mon, 4 Apr 2016 19:32:25 +0000 (15:32 -0400)
The defensive copy is not needed because the name may not alias the
output buffer.

(cherry picked from commit 317b199b4aff8cfa27f2302ab404d2bb5032b9a4)
(cherry picked from commit 883dceebc8f11921a9890211a4e202e5be17562f)
(cherry picked from commit 146b58d11fddbef15b888906e3be4f33900c416f)

resolv/nss_dns/dns-network.c

index 2eb2f67e66a8a2f51240eed081944159ebc6aca3..8f301a706b30287a8f8fb270bae8adfca055aae2 100644 (file)
@@ -118,17 +118,14 @@ _nss_dns_getnetbyname_r (const char *name, struct netent *result,
   } net_buffer;
   querybuf *orig_net_buffer;
   int anslen;
-  char *qbuf;
   enum nss_status status;
 
   if (__res_maybe_init (&_res, 0) == -1)
     return NSS_STATUS_UNAVAIL;
 
-  qbuf = strdupa (name);
-
   net_buffer.buf = orig_net_buffer = (querybuf *) alloca (1024);
 
-  anslen = __libc_res_nsearch (&_res, qbuf, C_IN, T_PTR, net_buffer.buf->buf,
+  anslen = __libc_res_nsearch (&_res, name, C_IN, T_PTR, net_buffer.buf->buf,
                               1024, &net_buffer.ptr, NULL, NULL, NULL, NULL);
   if (anslen < 0)
     {