]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Fix error handling in NIS.
authorJoe Landers <jlanders@vmware.com>
Fri, 30 Oct 2009 02:59:59 +0000 (19:59 -0700)
committerUlrich Drepper <drepper@redhat.com>
Fri, 30 Oct 2009 02:59:59 +0000 (19:59 -0700)
A buffer was freed even though it wasn't allocated as expected.  Do
this only when !batch_read.

ChangeLog
nis/nss_nis/nis-grp.c

index 81defae3f52ca691434fb4859738f277640db348..d2089f5e2c14a4f9515e646815aad1162e335cc1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2009-10-29  Ulrich Drepper  <drepper@redhat.com>
 
+       [BZ #10692]
+       * nis/nss_nis/nis-grp.c (internal_nis_getgrent_r): Don't free buffer
+       in error if batch_read.  Patch by Joe Landers <jlanders@vmware.com>.
+
        [BZ #10713]
        * nis/nss_nis/nis-grp.c (internal_nis_endgrent): Start freeing blocks
        from intern.start.  Patch by Joe Landers <jlanders@vmware.com>.
index 071d8a2a558fb6d0313128bdcab17e7ccb945647..6ad30eb1bb5b948a7266d209116f31e93fa63bc5 100644 (file)
@@ -204,7 +204,8 @@ internal_nis_getgrent_r (struct group *grp, char *buffer, size_t buflen,
 
       if (__builtin_expect ((size_t) (len + 1) > buflen, 0))
        {
-         free (result);
+         if (!batch_read)
+           free (result);
          *errnop = ERANGE;
          return NSS_STATUS_TRYAGAIN;
        }