diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | nss/getXXbyYY.c | 2 | ||||
-rw-r--r-- | nss/getnssent.c | 4 |
3 files changed, 9 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog index 0a499e456d..229faa33a3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2004-12-13 Ulrich Drepper <drepper@redhat.com> + + * nss/getnssent.c (__nss_getent): Double buffer size each round to + avoid problems with delays for some people's huge entries. + * nss/getXXbyYY.c (FUNCTION_NAME): Likewise. + 2004-12-13 Jakub Jelinek <jakub@redhat.com> * posix/getconf.c (main): Prepend just $GETCONF_DIR/ instead of diff --git a/nss/getXXbyYY.c b/nss/getXXbyYY.c index 854a3e859b..dd0ac840eb 100644 --- a/nss/getXXbyYY.c +++ b/nss/getXXbyYY.c @@ -123,7 +123,7 @@ FUNCTION_NAME (ADD_PARAMS) ) { char *new_buf; - buffer_size += BUFLEN; + buffer_size *= 2; new_buf = (char *) realloc (buffer, buffer_size); if (new_buf == NULL) { diff --git a/nss/getnssent.c b/nss/getnssent.c index a56d34d884..1f7573da74 100644 --- a/nss/getnssent.c +++ b/nss/getnssent.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2000 Free Software Foundation, Inc. +/* Copyright (C) 2000, 2004 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -38,7 +38,7 @@ __nss_getent (getent_r_function func, void **resbuf, char **buffer, && (h_errnop == NULL || *h_errnop == NETDB_INTERNAL)) { char *new_buf; - *buffer_size += buflen; + *buffer_size *= 2; new_buf = realloc (*buffer, *buffer_size); if (new_buf == NULL) { |