summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--nis/nis_table.c18
2 files changed, 14 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index 5a0eb1234e..fc3bfaf1ef 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
 2006-05-04  Ulrich Drepper  <drepper@redhat.com>
 
+	* nis/nis_table.c (nis_list): Avoid clearing res twice before
+	filling it for the first time.
+
 	* nis/nis_table.c (get_tablepath): Renamed from __get_tablepath.
 	Adjust all callers.
 	Free res object content before returning.
diff --git a/nis/nis_table.c b/nis/nis_table.c
index 1a7bf094f0..49a630312a 100644
--- a/nis/nis_table.c
+++ b/nis/nis_table.c
@@ -167,7 +167,7 @@ nis_list (const_nis_name name, unsigned int flags,
 			   const void *userdata),
 	  const void *userdata)
 {
-  nis_result *res = calloc (1, sizeof (nis_result));
+  nis_result *res = malloc (sizeof (nis_result));
   ib_request *ibreq;
   int status;
   enum clnt_stat clnt_status;
@@ -180,20 +180,24 @@ nis_list (const_nis_name name, unsigned int flags,
   char *tableptr;
   char *tablepath = NULL;
   int first_try = 0; /* Do we try the old binding at first ? */
+  int errcode;
 
   if (res == NULL)
     return NULL;
 
   if (name == NULL)
     {
+      errcode = NIS_BADNAME;
+    err_out:
+      memset (res, '\0', sizeof (nis_result));
       NIS_RES_STATUS (res) = NIS_BADNAME;
       return res;
     }
 
   if ((ibreq = __create_ib_request (name, flags)) == NULL)
     {
-      NIS_RES_STATUS (res) = NIS_BADNAME;
-      return res;
+      errcode = NIS_BADNAME;
+      goto err_out;
     }
 
   if ((flags & EXPAND_NAME)
@@ -205,16 +209,16 @@ nis_list (const_nis_name name, unsigned int flags,
       if (names == NULL)
 	{
 	  nis_free_request (ibreq);
-	  NIS_RES_STATUS (res) = NIS_BADNAME;
-	  return res;
+	  errcode = NIS_BADNAME;
+	  goto err_out;
 	}
       ibreq->ibr_name = strdup (names[name_nr]);
       if (ibreq->ibr_name == NULL)
 	{
 	  nis_freenames (names);
 	  nis_free_request (ibreq);
-	  NIS_RES_STATUS (res) = NIS_NOMEMORY;
-	  return res;
+	  errcode = NIS_NOMEMORY;
+	  goto err_out;
 	}
     }
   else