summaryrefslogtreecommitdiff
path: root/nis/nis_server.c
diff options
context:
space:
mode:
Diffstat (limited to 'nis/nis_server.c')
-rw-r--r--nis/nis_server.c81
1 files changed, 19 insertions, 62 deletions
diff --git a/nis/nis_server.c b/nis/nis_server.c
index 5274a3bfc4..0df608a153 100644
--- a/nis/nis_server.c
+++ b/nis/nis_server.c
@@ -19,7 +19,6 @@
#include <string.h>
#include <rpcsvc/nis.h>
-#include <rpcsvc/nislib.h>
#include "nis_intern.h"
nis_error
@@ -29,42 +28,21 @@ nis_servstate (const nis_server *serv, const nis_tag *tags,
nis_taglist taglist;
nis_taglist tagres;
+ *result = 0;
tagres.tags.tags_len = 0;
tagres.tags.tags_val = NULL;
- *result = NULL;
taglist.tags.tags_len = numtags;
taglist.tags.tags_val = (nis_tag *) tags;
if (serv == NULL)
- {
- if (__do_niscall (NULL, NIS_SERVSTATE, (xdrproc_t) xdr_nis_taglist,
- (caddr_t) &taglist, (xdrproc_t) xdr_nis_taglist,
- (caddr_t) &tagres, 0) != RPC_SUCCESS)
- return NIS_RPCERROR;
- }
- else
- {
- if (__do_niscall2 (serv, 1, NIS_SERVSTATE, (xdrproc_t) xdr_nis_taglist,
- (caddr_t) &taglist, (xdrproc_t) xdr_nis_taglist,
- (caddr_t) &tagres, 0) != RPC_SUCCESS)
- return NIS_RPCERROR;
- }
- if (tagres.tags.tags_len > 0)
- {
- u_long i;
-
- result = malloc (sizeof (nis_tag *) * tagres.tags.tags_len);
- if (result == NULL)
- return NIS_NOMEMORY;
- for (i = 0; i < tagres.tags.tags_len; ++i)
- {
- result[i] = malloc (sizeof (nis_tag));
- if (result[i] == NULL)
- return NIS_NOMEMORY;
- result[i]->tag_val = strdup (tagres.tags.tags_val[i].tag_val);
- result[i]->tag_type = tagres.tags.tags_val[i].tag_type;
- }
- }
+ return NIS_BADOBJECT;
+
+ if (__do_niscall2 (serv, 1, NIS_SERVSTATE, (xdrproc_t) xdr_nis_taglist,
+ (caddr_t) &taglist, (xdrproc_t) xdr_nis_taglist,
+ (caddr_t) &tagres, 0) != RPC_SUCCESS)
+ return NIS_RPCERROR;
+
+ *result = tagres.tags.tags_val;
return NIS_SUCCESS;
}
@@ -76,42 +54,21 @@ nis_stats (const nis_server *serv, const nis_tag *tags,
nis_taglist taglist;
nis_taglist tagres;
+ *result = NULL;
tagres.tags.tags_len = 0;
tagres.tags.tags_val = NULL;
- *result = NULL;
taglist.tags.tags_len = numtags;
taglist.tags.tags_val = (nis_tag *) tags;
if (serv == NULL)
- {
- if (__do_niscall (NULL, NIS_STATUS, (xdrproc_t) xdr_nis_taglist,
- (caddr_t) &taglist, (xdrproc_t) xdr_nis_taglist,
- (caddr_t) &tagres, 0) != RPC_SUCCESS)
- return NIS_RPCERROR;
- }
- else
- {
- if (__do_niscall2 (serv, 1, NIS_STATUS, (xdrproc_t) xdr_nis_taglist,
- (caddr_t) &taglist, (xdrproc_t) xdr_nis_taglist,
- (caddr_t) &tagres, 0) != RPC_SUCCESS)
- return NIS_RPCERROR;
- }
- if (tagres.tags.tags_len > 0)
- {
- u_long i;
-
- result = malloc (sizeof (nis_tag *) * tagres.tags.tags_len);
- if (result == NULL)
- return NIS_NOMEMORY;
- for (i = 0; i < tagres.tags.tags_len; ++i)
- {
- result[i] = malloc (sizeof (nis_tag));
- if (result[i] == NULL)
- return NIS_NOMEMORY;
- result[i]->tag_val = strdup (tagres.tags.tags_val[i].tag_val);
- result[i]->tag_type = tagres.tags.tags_val[i].tag_type;
- }
- }
+ return NIS_BADOBJECT;
+
+ if (__do_niscall2 (serv, 1, NIS_STATUS, (xdrproc_t) xdr_nis_taglist,
+ (caddr_t) &taglist, (xdrproc_t) xdr_nis_taglist,
+ (caddr_t) &tagres, 0) != RPC_SUCCESS)
+ return NIS_RPCERROR;
+
+ *result = tagres.tags.tags_val;
return NIS_SUCCESS;
}
@@ -122,6 +79,6 @@ nis_freetags (nis_tag *tags, const int numtags)
int i;
for (i = 0; i < numtags; ++i)
- free (tags->tag_val);
+ free (tags[i].tag_val);
free (tags);
}