summaryrefslogtreecommitdiff
path: root/nis
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2006-05-05 06:11:55 +0000
committerJakub Jelinek <jakub@redhat.com>2006-05-05 06:11:55 +0000
commit3f898a85fc15daad530ca7db852e7d724e3914b5 (patch)
treeaea4ca88f192663618dacf8b3fb9e7f5f1fe527b /nis
parentbaba5d9461d4e8a581ac26fe4412ad783ffc73e7 (diff)
Updated to fedora-glibc-20060505T0554cvs/fedora-glibc-2_4_90-5
Diffstat (limited to 'nis')
-rw-r--r--nis/nis_table.c13
-rw-r--r--nis/nss_nis/nis-grp.c3
-rw-r--r--nis/nss_nis/nis-pwd.c3
3 files changed, 13 insertions, 6 deletions
diff --git a/nis/nis_table.c b/nis/nis_table.c
index f56b499f60..1a7bf094f0 100644
--- a/nis/nis_table.c
+++ b/nis/nis_table.c
@@ -129,7 +129,7 @@ __create_ib_request (const_nis_name name, unsigned int flags)
static const struct timeval RPCTIMEOUT = {10, 0};
static char *
-__get_tablepath (char *name, dir_binding *bptr)
+get_tablepath (char *name, dir_binding *bptr)
{
enum clnt_stat result;
nis_result res;
@@ -152,7 +152,12 @@ __get_tablepath (char *name, dir_binding *bptr)
else
cptr = "";
- return strdup (cptr);
+ char *str = strdup (cptr);
+
+ if (result == RPC_SUCCESS)
+ xdr_free ((xdrproc_t) _xdr_nis_result, (char *) &res);
+
+ return str;
}
nis_result *
@@ -335,7 +340,7 @@ nis_list (const_nis_name name, unsigned int flags,
{
if (tablepath == NULL)
{
- tablepath = __get_tablepath (ibreq->ibr_name, &bptr);
+ tablepath = get_tablepath (ibreq->ibr_name, &bptr);
tableptr = tablepath;
}
if (tableptr == NULL)
@@ -400,7 +405,7 @@ nis_list (const_nis_name name, unsigned int flags,
{
if (tablepath == NULL)
{
- tablepath = __get_tablepath (ibreq->ibr_name, &bptr);
+ tablepath = get_tablepath (ibreq->ibr_name, &bptr);
tableptr = tablepath;
}
if (tableptr == NULL)
diff --git a/nis/nss_nis/nis-grp.c b/nis/nss_nis/nis-grp.c
index ce642c484f..6e36cf828f 100644
--- a/nis/nss_nis/nis-grp.c
+++ b/nis/nss_nis/nis-grp.c
@@ -220,7 +220,8 @@ internal_nis_getgrent_r (struct group *grp, char *buffer, size_t buflen,
errnop);
if (__builtin_expect (parse_res == -1, 0))
{
- free (outkey);
+ if (!batch_read)
+ free (outkey);
*errnop = ERANGE;
return NSS_STATUS_TRYAGAIN;
}
diff --git a/nis/nss_nis/nis-pwd.c b/nis/nss_nis/nis-pwd.c
index 7972118c84..1b5206ad6d 100644
--- a/nis/nss_nis/nis-pwd.c
+++ b/nis/nss_nis/nis-pwd.c
@@ -333,7 +333,8 @@ internal_nis_getpwent_r (struct passwd *pwd, char *buffer, size_t buflen,
errnop);
if (__builtin_expect (parse_res == -1, 0))
{
- free (outkey);
+ if (!batch_read)
+ free (outkey);
*errnop = ERANGE;
return NSS_STATUS_TRYAGAIN;
}