]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix stack overflow in _nss_dns_getnetbyname_r (BZ19879)
authorStan Shebs <stanshebs@google.com>
Mon, 9 May 2016 17:29:27 +0000 (10:29 -0700)
committerStan Shebs <stanshebs@google.com>
Mon, 9 May 2016 17:29:27 +0000 (10:29 -0700)
README.google
resolv/nss_dns/dns-network.c

index 85b310ab956c0148fee1afc6d5680c943f9ae614..57adcb4ab40ffba948b503974dab1d52d8377224 100644 (file)
@@ -570,3 +570,8 @@ sysdeps/powerpc/bits/fenvinline.h
 nptl/sysdeps/unix/sysv/linux/register-atfork.c
   For b/28011264, detect and work around loop in fork handler list.
   (stanshebs, google-local)
+
+resolv/nss_dns/dns-network.c
+  For b/27917753, fix stack overflow in _nss_dns_getnetbyname_r (BZ19879)
+  https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=317b199b4aff8cfa27f2302ab404d2bb5032b9a4
+  (stanshebs, google-local)
index 1993ec167627ddb267d179610ef69d4e39be75b4..539bb66b242e5d248f67bee5eac6f04daa9bd31d 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)
     {