diff options
Diffstat (limited to 'nis')
-rw-r--r-- | nis/nis_server.c | 81 |
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); } |