aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--nis/nss_compat/compat-initgroups.c6
2 files changed, 9 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 3a2a65e..e61eaa9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2004-08-19 Ulrich Drepper <drepper@redhat.com>
+
+ * nis/nss_compat/compat-initgroups.c (getgrent_next_nss):
+ Initialize mysize with limits only if latter is >= 0. Use mysize
+ in malloc call.
+
2004-08-19 Jakub Jelinek <jakub@redhat.com>
* sysdeps/posix/getaddrinfo.c (gaih_inet): Cast canon to (char *)
diff --git a/nis/nss_compat/compat-initgroups.c b/nis/nss_compat/compat-initgroups.c
index 7f14481..cea561d 100644
--- a/nis/nss_compat/compat-initgroups.c
+++ b/nis/nss_compat/compat-initgroups.c
@@ -242,8 +242,8 @@ getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
if (nss_initgroups_dyn && nss_getgrgid_r)
{
long int mystart = 0;
- long int mysize = limit;
- gid_t *mygroupsp = malloc (limit * sizeof (gid_t));
+ long int mysize = limit <= 0 ? *size : limit;
+ gid_t *mygroupsp = malloc (mysize * sizeof (gid_t));
if (mygroupsp == NULL)
return NSS_STATUS_TRYAGAIN;
@@ -258,7 +258,7 @@ getgrent_next_nss (ent_t *ent, char *buffer, size_t buflen, const char *user,
if (nss_initgroups_dyn (user, group, &mystart, &mysize, &mygroupsp,
limit, errnop) == NSS_STATUS_SUCCESS)
{
- /* A temporary buffer. We use the normal buffer, until we found
+ /* A temporary buffer. We use the normal buffer, until we find
an entry, for which this buffer is to small. In this case, we
overwrite the pointer with one to a bigger buffer. */
char *tmpbuf = buffer;