diff options
Diffstat (limited to 'nis/nss_nisplus')
-rw-r--r-- | nis/nss_nisplus/nisplus-alias.c | 16 | ||||
-rw-r--r-- | nis/nss_nisplus/nisplus-ethers.c | 16 | ||||
-rw-r--r-- | nis/nss_nisplus/nisplus-grp.c | 16 | ||||
-rw-r--r-- | nis/nss_nisplus/nisplus-hosts.c | 29 | ||||
-rw-r--r-- | nis/nss_nisplus/nisplus-netgrp.c | 1 | ||||
-rw-r--r-- | nis/nss_nisplus/nisplus-network.c | 15 | ||||
-rw-r--r-- | nis/nss_nisplus/nisplus-parser.c | 19 | ||||
-rw-r--r-- | nis/nss_nisplus/nisplus-proto.c | 9 | ||||
-rw-r--r-- | nis/nss_nisplus/nisplus-publickey.c | 1 | ||||
-rw-r--r-- | nis/nss_nisplus/nisplus-pwd.c | 9 | ||||
-rw-r--r-- | nis/nss_nisplus/nisplus-rpc.c | 3 | ||||
-rw-r--r-- | nis/nss_nisplus/nisplus-service.c | 3 | ||||
-rw-r--r-- | nis/nss_nisplus/nisplus-spwd.c | 1 |
13 files changed, 73 insertions, 65 deletions
diff --git a/nis/nss_nisplus/nisplus-alias.c b/nis/nss_nisplus/nisplus-alias.c index 0a16b3890f..8d682d785c 100644 --- a/nis/nss_nisplus/nisplus-alias.c +++ b/nis/nss_nisplus/nisplus-alias.c @@ -24,7 +24,6 @@ #include <aliases.h> #include <bits/libc-lock.h> #include <rpcsvc/nis.h> -#include <rpcsvc/nislib.h> #include "nss-nisplus.h" @@ -153,6 +152,8 @@ _nss_nisplus_parse_aliasent (nis_result *result, unsigned long entry, static enum nss_status internal_setaliasent (void) { + enum nss_status status; + if (result) nis_freeresult (result); result = NULL; @@ -162,12 +163,13 @@ internal_setaliasent (void) next_entry = 0; result = nis_list(tablename_val, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL); - if (niserr2nss (result->status) != NSS_STATUS_SUCCESS) + status = niserr2nss (result->status); + if (status != NSS_STATUS_SUCCESS) { nis_freeresult (result); result = NULL; } - return niserr2nss (result->status); + return status; } enum nss_status @@ -206,7 +208,13 @@ internal_nisplus_getaliasent_r (struct aliasent *alias, int parse_res; if (result == NULL) - internal_setaliasent (); + { + enum nss_status status; + + status = internal_setaliasent (); + if (result == NULL || status != NSS_STATUS_SUCCESS) + return status; + } /* Get the next entry until we found a correct one. */ do diff --git a/nis/nss_nisplus/nisplus-ethers.c b/nis/nss_nisplus/nisplus-ethers.c index d7c3720932..cfdb3dc4e1 100644 --- a/nis/nss_nisplus/nisplus-ethers.c +++ b/nis/nss_nisplus/nisplus-ethers.c @@ -25,7 +25,6 @@ #include <netdb.h> #include <netinet/ether.h> #include <rpcsvc/nis.h> -#include <rpcsvc/nislib.h> #include <netinet/if_ether.h> #include "nss-nisplus.h" @@ -153,7 +152,7 @@ internal_nisplus_getetherent_r (struct etherent *ether, char *buffer, do { nis_result *saved_result; - + if (result == NULL) { saved_result = NULL; @@ -175,7 +174,7 @@ internal_nisplus_getetherent_r (struct etherent *ether, char *buffer, } } - if ((parse_res = _nss_nisplus_parse_etherent (result, ether, buffer, + if ((parse_res = _nss_nisplus_parse_etherent (result, ether, buffer, buflen)) == -1) { nis_freeresult (result); @@ -187,7 +186,7 @@ internal_nisplus_getetherent_r (struct etherent *ether, char *buffer, if (saved_result != NULL) nis_freeresult (saved_result); } - + } while (!parse_res); return NSS_STATUS_SUCCESS; @@ -233,14 +232,14 @@ _nss_nisplus_gethostton_r (const char *name, struct etherent *eth, nis_freeresult (result); return status; } - + if ((parse_res = _nss_nisplus_parse_etherent (result, eth, buffer, buflen)) == -1) { nis_freeresult (result); return NSS_STATUS_TRYAGAIN; } - + if (parse_res) return NSS_STATUS_SUCCESS; } @@ -282,16 +281,15 @@ _nss_nisplus_getntohost_r (const struct ether_addr *addr, return status; } - if ((parse_res = _nss_nisplus_parse_etherent (result, eth, buffer, + if ((parse_res = _nss_nisplus_parse_etherent (result, eth, buffer, buflen)) == -1) { nis_freeresult (result); return NSS_STATUS_TRYAGAIN; } - + if (parse_res) return NSS_STATUS_SUCCESS; } return NSS_STATUS_NOTFOUND; } - diff --git a/nis/nss_nisplus/nisplus-grp.c b/nis/nss_nisplus/nisplus-grp.c index 08e9e040fe..1031d69ac9 100644 --- a/nis/nss_nisplus/nisplus-grp.c +++ b/nis/nss_nisplus/nisplus-grp.c @@ -24,7 +24,6 @@ #include <string.h> #include <bits/libc-lock.h> #include <rpcsvc/nis.h> -#include <rpcsvc/nislib.h> #include "nss-nisplus.h" #include "nisplus-parser.h" @@ -57,6 +56,8 @@ _nss_create_tablename (void) static enum nss_status internal_setgrent (void) { + enum nss_status status; + if (result) nis_freeresult (result); result = NULL; @@ -67,12 +68,13 @@ internal_setgrent (void) return NSS_STATUS_UNAVAIL; result = nis_list (tablename_val, FOLLOW_LINKS | FOLLOW_PATH, NULL, NULL); - if (niserr2nss (result->status) != NSS_STATUS_SUCCESS) + status = niserr2nss (result->status); + if (status != NSS_STATUS_SUCCESS) { nis_freeresult (result); result = NULL; } - return niserr2nss (result->status); + return status; } enum nss_status @@ -109,7 +111,13 @@ internal_nisplus_getgrent_r (struct group *gr, char *buffer, size_t buflen) int parse_res; if (result == NULL) - internal_setgrent (); + { + enum nss_status status; + + status = internal_setgrent (); + if (result == NULL || status != NSS_STATUS_SUCCESS) + return status; + } /* Get the next entry until we found a correct one. */ do diff --git a/nis/nss_nisplus/nisplus-hosts.c b/nis/nss_nisplus/nisplus-hosts.c index 10f939e341..89a8bf7564 100644 --- a/nis/nss_nisplus/nisplus-hosts.c +++ b/nis/nss_nisplus/nisplus-hosts.c @@ -26,7 +26,6 @@ #include <arpa/inet.h> #include <bits/libc-lock.h> #include <rpcsvc/nis.h> -#include <rpcsvc/nislib.h> #include "nss-nisplus.h" @@ -98,7 +97,7 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host, if (NISENTRYLEN (0, 0, result) + 1 > room_left) goto no_more_room; - + p = stpncpy (first_unused, NISENTRYVAL (0, 0, result), NISENTRYLEN (0, 0, result)); *p = '\0'; @@ -114,7 +113,7 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host, { if (NISENTRYLEN (i, 1, result) + 2 > room_left) goto no_more_room; - + *p++ = ' '; p = stpncpy (p, NISENTRYVAL (i, 1, result), NISENTRYLEN (i, 1, result)); @@ -131,7 +130,7 @@ _nss_nisplus_parse_hostent (nis_result *result, int af, struct hostent *host, host->h_addr_list = (char **) first_unused; if (room_left < 2 * sizeof (char *)) goto no_more_room; - + room_left -= (2 * sizeof (char *)); host->h_addr_list[0] = data; host->h_addr_list[1] = NULL; @@ -242,7 +241,7 @@ internal_nisplus_gethostent_r (struct hostent *host, char *buffer, result = nis_first_entry(tablename_val); if (niserr2nss (result->status) != NSS_STATUS_SUCCESS) { - enum nss_status retval = niserr2nss (result->status); + enum nss_status retval = niserr2nss (result->status); if (retval == NSS_STATUS_TRYAGAIN) { *herrnop = NETDB_INTERNAL; @@ -250,12 +249,12 @@ internal_nisplus_gethostent_r (struct hostent *host, char *buffer, } return retval; } - + } else { nis_result *res2; - + saved_res = result; res2 = nis_next_entry(tablename_val, &result->cookie); result = res2; @@ -273,7 +272,7 @@ internal_nisplus_gethostent_r (struct hostent *host, char *buffer, return retval; } } - + parse_res = _nss_nisplus_parse_hostent (result, AF_INET6, host, buffer, buflen); if (parse_res < 1 && errno != ERANGE) @@ -288,9 +287,9 @@ internal_nisplus_gethostent_r (struct hostent *host, char *buffer, } if (saved_res != NULL) nis_freeresult (saved_res); - + } while (!parse_res); - + return NSS_STATUS_SUCCESS; } @@ -349,10 +348,10 @@ _nss_nisplus_gethostbyname2_r (const char *name, int af, struct hostent *host, else sprintf(buf, "[cname=%s],%s", NISENTRYVAL(0, 0, result), tablename_val); - + nis_freeresult (result); result = nis_list(buf, FOLLOW_PATH | FOLLOW_LINKS, NULL, NULL); - + retval = niserr2nss (result->status); if (retval != NSS_STATUS_SUCCESS) { @@ -369,7 +368,7 @@ _nss_nisplus_gethostbyname2_r (const char *name, int af, struct hostent *host, _nss_nisplus_parse_hostent (result, af, host, buffer, buflen); nis_freeresult (result); - + if (parse_res > 0) return NSS_STATUS_SUCCESS; @@ -435,10 +434,10 @@ _nss_nisplus_gethostbyaddr_r (const char *addr, int addrlen, int type, parse_res = _nss_nisplus_parse_hostent (result, type, host, buffer, buflen); nis_freeresult (result); - + if (parse_res > 0) return NSS_STATUS_SUCCESS; - + *herrnop = NETDB_INTERNAL; if (parse_res == -1) return NSS_STATUS_TRYAGAIN; diff --git a/nis/nss_nisplus/nisplus-netgrp.c b/nis/nss_nisplus/nisplus-netgrp.c index 9c38539de8..967eec898c 100644 --- a/nis/nss_nisplus/nisplus-netgrp.c +++ b/nis/nss_nisplus/nisplus-netgrp.c @@ -25,7 +25,6 @@ #include <netgroup.h> #include <bits/libc-lock.h> #include <rpcsvc/nis.h> -#include <rpcsvc/nislib.h> #include "nss-nisplus.h" diff --git a/nis/nss_nisplus/nisplus-network.c b/nis/nss_nisplus/nisplus-network.c index 57362dba78..ff71af8573 100644 --- a/nis/nss_nisplus/nisplus-network.c +++ b/nis/nss_nisplus/nisplus-network.c @@ -25,7 +25,6 @@ #include <arpa/inet.h> #include <bits/libc-lock.h> #include <rpcsvc/nis.h> -#include <rpcsvc/nislib.h> #include "nss-nisplus.h" @@ -86,7 +85,7 @@ _nss_nisplus_parse_netent (nis_result *result, struct netent *network, { if (NISENTRYLEN (i, 1, result) + 2 > room_left) goto no_more_room; - + *p++ = ' '; p = stpncpy (p, NISENTRYVAL (i, 1, result), NISENTRYLEN (i, 1, result)); @@ -217,7 +216,7 @@ internal_nisplus_getnetent_r (struct netent *network, char *buffer, if (niserr2nss (result->status) != NSS_STATUS_SUCCESS) { int retval; - + retval = niserr2nss (result->status); nis_freeresult (result); result = NULL; @@ -254,15 +253,15 @@ internal_nisplus_getnetent_r (struct netent *network, char *buffer, } } - if ((parse_res = _nss_nisplus_parse_netent (result, network, buffer, + if ((parse_res = _nss_nisplus_parse_netent (result, network, buffer, buflen)) == -1) { *herrnop = NETDB_INTERNAL; return NSS_STATUS_TRYAGAIN; } - + } while (!parse_res); - + return NSS_STATUS_SUCCESS; } @@ -301,7 +300,7 @@ _nss_nisplus_getnetbyname_r (const char *name, struct netent *network, { nis_result *result; char buf[strlen (name) + 255 + tablename_len]; - + /* Search at first in the alias list, and use the correct name for the next search */ sprintf(buf, "[name=%s],%s", name, tablename_val); @@ -390,7 +389,7 @@ _nss_nisplus_getnetbyaddr_r (const unsigned long addr, const int type, if (parse_res > 0) return NSS_STATUS_SUCCESS; - + *herrnop = NETDB_INTERNAL; if (parse_res == -1) return NSS_STATUS_TRYAGAIN; diff --git a/nis/nss_nisplus/nisplus-parser.c b/nis/nss_nisplus/nisplus-parser.c index 3d0ff32e57..db5f487159 100644 --- a/nis/nss_nisplus/nisplus-parser.c +++ b/nis/nss_nisplus/nisplus-parser.c @@ -212,20 +212,23 @@ _nss_nisplus_parse_grent (nis_result *result, u_long entry, room_left -= sizeof (char *); gr->gr_mem[count] = line; - while (*line != '\0' && *line != ',' && !isspace(*line)) + while (*line != '\0' && *line != ',' && !isspace (*line)) ++line; - if (line != gr->gr_mem[count]) + if (*line == ',' || isspace (*line)) { - if (*line != '\0') - { - *line = '\0'; + int is = isspace (*line); + + *line = '\0'; + if (is) + while (*line != '\0' && (*line == ',' || isspace (*line))) ++line; - } + else + ++line; ++count; } else - gr->gr_mem[count] = NULL; + gr->gr_mem[count+1] = NULL; } if (room_left < sizeof (char *)) goto no_more_room; @@ -241,7 +244,7 @@ _nss_nisplus_parse_spent (nis_result *result, struct spwd *sp, { char *first_unused = buffer; size_t room_left = buflen; - + if (result == NULL) return 0; diff --git a/nis/nss_nisplus/nisplus-proto.c b/nis/nss_nisplus/nisplus-proto.c index 707a0e5296..ddfce86905 100644 --- a/nis/nss_nisplus/nisplus-proto.c +++ b/nis/nss_nisplus/nisplus-proto.c @@ -24,7 +24,6 @@ #include <string.h> #include <bits/libc-lock.h> #include <rpcsvc/nis.h> -#include <rpcsvc/nislib.h> #include "nss-nisplus.h" @@ -212,7 +211,7 @@ internal_nisplus_getprotoent_r (struct protoent *proto, char *buffer, else { nis_result *res; - + saved_res = result; res = nis_next_entry (tablename_val, &result->cookie); result = res; @@ -224,7 +223,7 @@ internal_nisplus_getprotoent_r (struct protoent *proto, char *buffer, } } - if ((parse_res = _nss_nisplus_parse_protoent (result, proto, buffer, + if ((parse_res = _nss_nisplus_parse_protoent (result, proto, buffer, buflen)) == -1) { nis_freeresult (result); @@ -346,10 +345,10 @@ _nss_nisplus_getprotobynumber_r (const int number, struct protoent *proto, if (parse_res == -1) return NSS_STATUS_TRYAGAIN; - + if (parse_res) return NSS_STATUS_SUCCESS; - + return NSS_STATUS_NOTFOUND; } } diff --git a/nis/nss_nisplus/nisplus-publickey.c b/nis/nss_nisplus/nisplus-publickey.c index 4c596b8ada..554da95754 100644 --- a/nis/nss_nisplus/nisplus-publickey.c +++ b/nis/nss_nisplus/nisplus-publickey.c @@ -25,7 +25,6 @@ #include <syslog.h> #include <rpc/rpc.h> #include <rpcsvc/nis.h> -#include <rpcsvc/nislib.h> #ifdef HAVE_SECURE_RPC #include <rpc/key_prot.h> extern int xdecrypt (char *, char *); diff --git a/nis/nss_nisplus/nisplus-pwd.c b/nis/nss_nisplus/nisplus-pwd.c index 2c1fb19cab..e358b060e1 100644 --- a/nis/nss_nisplus/nisplus-pwd.c +++ b/nis/nss_nisplus/nisplus-pwd.c @@ -23,7 +23,6 @@ #include <string.h> #include <bits/libc-lock.h> #include <rpcsvc/nis.h> -#include <rpcsvc/nislib.h> #include "nss-nisplus.h" @@ -97,7 +96,7 @@ internal_nisplus_getpwent_r (struct passwd *pw, char *buffer, size_t buflen) do { nis_result *saved_res; - + if (result == NULL) { saved_res = NULL; @@ -123,7 +122,7 @@ internal_nisplus_getpwent_r (struct passwd *pw, char *buffer, size_t buflen) } } - if ((parse_res = _nss_nisplus_parse_pwent (result, pw, buffer, + if ((parse_res = _nss_nisplus_parse_pwent (result, pw, buffer, buflen)) == -1) { nis_freeresult (result); @@ -192,7 +191,7 @@ _nss_nisplus_getpwnam_r (const char *name, struct passwd *pw, if (parse_res) return NSS_STATUS_SUCCESS; - + return NSS_STATUS_NOTFOUND; } } @@ -227,7 +226,7 @@ _nss_nisplus_getpwuid_r (const uid_t uid, struct passwd *pw, if (parse_res == -1) return NSS_STATUS_TRYAGAIN; - + if (parse_res) return NSS_STATUS_SUCCESS; diff --git a/nis/nss_nisplus/nisplus-rpc.c b/nis/nss_nisplus/nisplus-rpc.c index b70c2ebbca..6682a7502a 100644 --- a/nis/nss_nisplus/nisplus-rpc.c +++ b/nis/nss_nisplus/nisplus-rpc.c @@ -24,7 +24,6 @@ #include <bits/libc-lock.h> #include <rpc/netdb.h> #include <rpcsvc/nis.h> -#include <rpcsvc/nislib.h> #include "nss-nisplus.h" @@ -225,7 +224,7 @@ internal_nisplus_getrpcent_r (struct rpcent *rpc, char *buffer, } } - if ((parse_res = _nss_nisplus_parse_rpcent (result, rpc, buffer, + if ((parse_res = _nss_nisplus_parse_rpcent (result, rpc, buffer, buflen)) == -1) { nis_freeresult (result); diff --git a/nis/nss_nisplus/nisplus-service.c b/nis/nss_nisplus/nisplus-service.c index 37042d9d13..e8a12145d3 100644 --- a/nis/nss_nisplus/nisplus-service.c +++ b/nis/nss_nisplus/nisplus-service.c @@ -24,7 +24,6 @@ #include <string.h> #include <bits/libc-lock.h> #include <rpcsvc/nis.h> -#include <rpcsvc/nislib.h> #include "nss-nisplus.h" @@ -205,7 +204,7 @@ internal_nisplus_getservent_r (struct servent *serv, char *buffer, do { nis_result *saved_res; - + if (result == NULL) { saved_res = NULL; diff --git a/nis/nss_nisplus/nisplus-spwd.c b/nis/nss_nisplus/nisplus-spwd.c index c7f1e2a567..507aa4bcad 100644 --- a/nis/nss_nisplus/nisplus-spwd.c +++ b/nis/nss_nisplus/nisplus-spwd.c @@ -23,7 +23,6 @@ #include <string.h> #include <bits/libc-lock.h> #include <rpcsvc/nis.h> -#include <rpcsvc/nislib.h> #include "nss-nisplus.h" #include "nisplus-parser.h" |