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 81defae..d2089f5 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 071d8a2..6ad30eb 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;
        }