This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch, master, updated. glibc-2.11-369-gea42a20
- From: drepper at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 10 Apr 2010 04:38:54 -0000
- Subject: GNU C Library master sources branch, master, updated. glibc-2.11-369-gea42a20
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".
The branch, master has been updated
via ea42a20caed5b343ff20a0d4622ae6c17b77161b (commit)
from 17ad3877276b37af45c380b07b975406cf2e95de (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=ea42a20caed5b343ff20a0d4622ae6c17b77161b
commit ea42a20caed5b343ff20a0d4622ae6c17b77161b
Author: Ulrich Drepper <drepper@redhat.com>
Date: Fri Apr 9 21:38:20 2010 -0700
Fix crash on reloading of gai data in nscd.
diff --git a/ChangeLog b/ChangeLog
index c38784e..606bc22 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2010-04-09 Ulrich Drepper <drepper@redhat.com>
+
+ * nscd/aicache.c (addhstaiX): Correct passing memory to address
+ list to gethostbyname4_r functions.
+
+ * resolv/nss_dns/dns-host.c (gaih_getanswer_slice): Optimize
+ copying of h_name.
+
2010-04-09 Roland McGrath <roland@redhat.com>
* Makerules ($(common-objpfx)libc-abis.h): Depend on libc-abis.stamp.
diff --git a/nscd/aicache.c b/nscd/aicache.c
index 992357d..3cb2208 100644
--- a/nscd/aicache.c
+++ b/nscd/aicache.c
@@ -1,5 +1,5 @@
/* Cache handling for host lookup.
- Copyright (C) 2004-2008, 2009 Free Software Foundation, Inc.
+ Copyright (C) 2004-2008, 2009, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2004.
@@ -111,7 +111,7 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
int old_res_options = _res.options;
_res.options &= ~RES_USE_INET6;
- size_t tmpbuf6len = 512;
+ size_t tmpbuf6len = 1024;
char *tmpbuf6 = alloca (tmpbuf6len);
size_t tmpbuf4len = 0;
char *tmpbuf4 = NULL;
@@ -133,9 +133,11 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
"gethostbyname4_r");
if (fct4 != NULL)
{
- struct gaih_addrtuple *at = NULL;
+ struct gaih_addrtuple atmem;
+ struct gaih_addrtuple *at;
while (1)
{
+ at = &atmem;
rc6 = 0;
herrno = 0;
status[1] = DL_CALL_FCT (fct4, (key, &at, tmpbuf6, tmpbuf6len,
@@ -153,7 +155,7 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req,
goto next_nip;
/* We found the data. Count the addresses and the size. */
- for (const struct gaih_addrtuple *at2 = at; at2 != NULL;
+ for (const struct gaih_addrtuple *at2 = at = &atmem; at2 != NULL;
at2 = at2->next)
{
++naddrs;
diff --git a/resolv/nss_dns/dns-host.c b/resolv/nss_dns/dns-host.c
index e0c4978..8592183 100644
--- a/resolv/nss_dns/dns-host.c
+++ b/resolv/nss_dns/dns-host.c
@@ -1050,7 +1050,7 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
++had_error;
continue;
}
- if (*firstp)
+ if (*firstp && canon == NULL)
{
h_name = buffer;
buffer += h_namelen;
@@ -1166,19 +1166,7 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
if (ttl != 0 && ttlp != NULL)
*ttlp = ttl;
- if (canon != NULL)
- {
- (*pat)->name = canon;
-
- /* Reclaim buffer space. */
- if (h_name + h_namelen == buffer)
- {
- buffer = h_name;
- buflen += h_namelen;
- }
- }
- else
- (*pat)->name = h_name;
+ (*pat)->name = canon ?: h_name;
*firstp = 0;
}
-----------------------------------------------------------------------
Summary of changes:
ChangeLog | 8 ++++++++
nscd/aicache.c | 10 ++++++----
resolv/nss_dns/dns-host.c | 16 ++--------------
3 files changed, 16 insertions(+), 18 deletions(-)
hooks/post-receive
--
GNU C Library master sources