Patch for NIS memory leak

H.J. Lu hjl@varesearch.com
Tue May 4 19:20:00 GMT 1999


Hi,

This patch patch fixes some, not all, memory leaks in NIS code. The
problem shows up on the NFS server when

1. There is

hosts:      files nisplus nis dns

in /etc/nsswitch.conf.

2. Run NIS, not NIS+.

3. /etc/hosts doesn't have the NFS clint IP address.

4. NIS doesn't have the NFS client IP address.

5. DNS has the NFS clint IP address.

6. nscd is not running.

The result is the size of mountd from knfsd 1.2.2a will grow each time 
when the NFS client does mount and umount.

Thorsten, could you please take a close look at my patch and other
possible memory leaks?

Thanks.


H.J.
----
Tue May  4 18:38:22 1999  H.J. Lu  <hjl@gnu.org>

	* nis/nis_table.c (nis_list): Fix some meory leaks.

diff -u -p -r1.1.1.15 nis_table.c
--- nis/nis_table.c	1999/05/05 01:35:26	1.1.1.15
+++ nis/nis_table.c	1999/05/05 01:37:01
@@ -186,6 +186,7 @@ nis_list (const_nis_name name, unsigned 
       ibreq->ibr_name = NULL;
       if (names == NULL)
 	{
+	  nis_free_request (ibreq);
 	  NIS_RES_STATUS (res) = NIS_BADNAME;
 	  return res;
 	}
@@ -209,6 +210,7 @@ nis_list (const_nis_name name, unsigned 
       status = __nisfind_server (ibreq->ibr_name, &dir);
       if (status != NIS_SUCCESS)
         {
+	  nis_free_request (ibreq);
           NIS_RES_STATUS (res) = status;
           return res;
         }
@@ -227,6 +229,7 @@ nis_list (const_nis_name name, unsigned 
 	  {
 	    __nisbind_destroy (&bptr);
 	    nis_free_directory (dir);
+	    nis_free_request (ibreq);
 	    NIS_RES_STATUS (res) = NIS_NAMEUNREACHABLE;
 	    return res;
 	  }



More information about the Libc-hacker mailing list