aboutsummaryrefslogtreecommitdiff
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 5a0eb12..fc3bfaf 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 1a7bf09..49a6303 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