diff options
Diffstat (limited to 'usr/src')
-rw-r--r-- | usr/src/cmd/nscd/nscd_nswstate.c | 2 | ||||
-rw-r--r-- | usr/src/lib/libsldap/common/ns_reads.c | 29 | ||||
-rw-r--r-- | usr/src/lib/nsswitch/ldap/common/getnetgrent.c | 322 | ||||
-rw-r--r-- | usr/src/lib/nsswitch/ldap/common/ldap_common.c | 70 | ||||
-rw-r--r-- | usr/src/lib/nsswitch/ldap/common/ldap_common.h | 3 |
5 files changed, 236 insertions, 190 deletions
diff --git a/usr/src/cmd/nscd/nscd_nswstate.c b/usr/src/cmd/nscd/nscd_nswstate.c index ac5d94d7b9..5d9fe83dca 100644 --- a/usr/src/cmd/nscd/nscd_nswstate.c +++ b/usr/src/cmd/nscd/nscd_nswstate.c @@ -63,7 +63,7 @@ _nscd_free_nsw_state( if ((*s->nsw_cfg_p)->nobase != 1) _nscd_release((nscd_acc_data_t *)s->nsw_cfg_p); else - _nscd_free_nsw_config(*s->nsw_cfg_p); + (void) _nscd_set((nscd_acc_data_t *)s->nsw_cfg_p, NULL); if (s->be_db_pp != NULL) { for (i = 0; i < s->max_src; i++) { diff --git a/usr/src/lib/libsldap/common/ns_reads.c b/usr/src/lib/libsldap/common/ns_reads.c index 284704ca61..8acde7cd5a 100644 --- a/usr/src/lib/libsldap/common/ns_reads.c +++ b/usr/src/lib/libsldap/common/ns_reads.c @@ -1624,8 +1624,10 @@ get_next_session(ns_ldap_cookie_t *cookie) int rc; int fail_if_new_pwd_reqd = 1; - if (cookie->connectionId > -1) + if (cookie->connectionId > -1) { DropConnection(cookie->connectionId, cookie->i_flags); + cookie->connectionId = -1; + } rc = __s_api_getConnection(NULL, cookie->i_flags, cookie->i_auth, &connectionId, &conp, @@ -1663,8 +1665,10 @@ get_referral_session(ns_ldap_cookie_t *cookie) int rc; int fail_if_new_pwd_reqd = 1; - if (cookie->connectionId > -1) + if (cookie->connectionId > -1) { DropConnection(cookie->connectionId, cookie->i_flags); + cookie->connectionId = -1; + } rc = __s_api_getConnection(cookie->refpos->refHost, 0, cookie->i_auth, &connectionId, &conp, @@ -2066,15 +2070,18 @@ search_state_machine(ns_ldap_cookie_t *cookie, ns_state_t state, int cycle) ns_ldap_error_t **errorp; errorp = &error; - cookie->err_rc = 0; cookie->state = state; errstr[0] = '\0'; for (;;) { switch (cookie->state) { case CLEAR_RESULTS: - (void) ldap_abandon_ext(cookie->conn->ld, - cookie->msgId, NULL, NULL); + if (cookie->conn != NULL && cookie->conn->ld != NULL && + cookie->connectionId != -1 && cookie->msgId != 0) { + (void) ldap_abandon_ext(cookie->conn->ld, + cookie->msgId, NULL, NULL); + cookie->msgId = 0; + } cookie->new_state = EXIT; break; case GET_ACCT_MGMT_INFO: @@ -2967,8 +2974,12 @@ __ns_ldap_firstEntry( cookie->result = NULL; *vcookie = (void *)cookie; return (NS_LDAP_SUCCESS); - case ERROR: case LDAP_ERROR: + state = search_state_machine(cookie, state, ONE_STEP); + state = search_state_machine(cookie, CLEAR_RESULTS, + ONE_STEP); + /* FALLTHROUGH */ + case ERROR: rc = cookie->err_rc; *errorp = cookie->errorp; cookie->errorp = NULL; @@ -3026,8 +3037,12 @@ __ns_ldap_nextEntry( *result = cookie->result; cookie->result = NULL; return (NS_LDAP_SUCCESS); - case ERROR: case LDAP_ERROR: + state = search_state_machine(cookie, state, ONE_STEP); + state = search_state_machine(cookie, CLEAR_RESULTS, + ONE_STEP); + /* FALLTHROUGH */ + case ERROR: rc = cookie->err_rc; *errorp = cookie->errorp; cookie->errorp = NULL; diff --git a/usr/src/lib/nsswitch/ldap/common/getnetgrent.c b/usr/src/lib/nsswitch/ldap/common/getnetgrent.c index d3072440f2..9fc64ff6c8 100644 --- a/usr/src/lib/nsswitch/ldap/common/getnetgrent.c +++ b/usr/src/lib/nsswitch/ldap/common/getnetgrent.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -123,7 +123,7 @@ add_netgroup_name(const char *name, netgroup_table_t *tab) if (ng == NULL) { ng_new = (netgroup_name_t *) - calloc(1, sizeof (netgroup_name_t)); + calloc(1, sizeof (netgroup_name_t)); if (ng_new == NULL) return (-1); ng_new->name = strdup(name); @@ -424,7 +424,7 @@ match_triple_entry(struct nss_innetgr_args *ia, const ns_ldap_entry_t *entry) } else { for (; *attr; attr++) { if (strlcpy(triple, *attr, - sizeof (triple)) >= sizeof (triple)) + sizeof (triple)) >= sizeof (triple)) continue; if (split_triple(triple, &thost, &tuser, &tdomain) != 0) continue; @@ -433,7 +433,7 @@ match_triple_entry(struct nss_innetgr_args *ia, const ns_ldap_entry_t *entry) if (strcasecmp(thost, phost[i]) == 0) break; if (i == nhost) - continue; + continue; } if (tuser != NULL && *tuser != '\0' && nusers != 0) { for (i = 0; i < nusers; i++) @@ -443,7 +443,7 @@ match_triple_entry(struct nss_innetgr_args *ia, const ns_ldap_entry_t *entry) continue; } if (tdomain != NULL && *tdomain != '\0' && - ndomains != 0) { + ndomains != 0) { for (i = 0; i < ndomains; i++) if (domcmp(tdomain, pdomains[i]) == 0) break; @@ -463,8 +463,8 @@ match_triple(struct nss_innetgr_args *ia, ns_ldap_result_t *result) ns_ldap_entry_t *entry; for (entry = result->entry; entry != NULL; entry = entry->next) - if (match_triple_entry(ia, entry) == 1) - return (1); + if (match_triple_entry(ia, entry) == 1) + return (1); return (0); } @@ -496,9 +496,9 @@ add_netgroup_member(ns_ldap_result_t *result, netgroup_table_t *tab) int ret = 0; for (entry = result->entry; entry != NULL; entry = entry->next) { - ret = add_netgroup_member_entry(entry, tab); - if (ret != 0) - break; + ret = add_netgroup_member_entry(entry, tab); + if (ret != 0) + break; } return (ret); } @@ -517,6 +517,7 @@ top_down_search(struct nss_innetgr_args *ia, char *netgrname) int rc; void *cookie = NULL; nss_status_t status = NSS_NOTFOUND; + nss_status_t status1; netgroup_table_t tab; netgroup_name_t *ng; int ret; @@ -524,47 +525,68 @@ top_down_search(struct nss_innetgr_args *ia, char *netgrname) (void) memset(&tab, 0, sizeof (tab)); if (add_netgroup_name(netgrname, &tab) != 0) - return ((nss_status_t)NSS_NOTFOUND); + return ((nss_status_t)NSS_NOTFOUND); while ((ng = get_next_netgroup(&tab)) != NULL) { - if (_ldap_filter_name(name, ng->name, sizeof (name)) != 0) - break; - ret = snprintf(searchfilter, sizeof (searchfilter), _F_SETMEMBER, - name); - if (ret >= sizeof (searchfilter) || ret < 0) - break; + if (_ldap_filter_name(name, ng->name, sizeof (name)) != 0) + break; + ret = snprintf(searchfilter, sizeof (searchfilter), + _F_SETMEMBER, name); + if (ret >= sizeof (searchfilter) || ret < 0) + break; - ret = snprintf(userdata, sizeof (userdata), _F_SETMEMBER_SSD, name); - if (ret >= sizeof (userdata) || ret < 0) - break; + ret = snprintf(userdata, sizeof (userdata), _F_SETMEMBER_SSD, + name); + if (ret >= sizeof (userdata) || ret < 0) + break; - rc = __ns_ldap_firstEntry(_NETGROUP, searchfilter, - _merge_SSD_filter, netgrent_attrs, NULL, 0, &cookie, &result, - &error, userdata); - - (void) __ns_ldap_freeError(&error); - while (rc == NS_LDAP_SUCCESS && result != NULL) { - if (match_triple(ia, result) == 1) { - /* We found a match */ - ia->status = NSS_NETGR_FOUND; - status = NSS_SUCCESS; - break; + rc = __ns_ldap_firstEntry(_NETGROUP, searchfilter, + _merge_SSD_filter, netgrent_attrs, NULL, 0, &cookie, + &result, &error, userdata); + + if (error != NULL) { + status1 = switch_err(rc, error); + if (status1 == NSS_TRYAGAIN) { + (void) __ns_ldap_freeError(&error); + free_netgroup_table(&tab); + return (status1); + } } - rc = add_netgroup_member(result, &tab); - (void) __ns_ldap_freeResult(&result); + (void) __ns_ldap_freeError(&error); + while (rc == NS_LDAP_SUCCESS && result != NULL) { + if (match_triple(ia, result) == 1) { + /* We found a match */ + ia->status = NSS_NETGR_FOUND; + status = NSS_SUCCESS; + break; + } - if (rc != NS_LDAP_SUCCESS) - break; - rc = __ns_ldap_nextEntry(cookie, &result, &error); + rc = add_netgroup_member(result, &tab); + (void) __ns_ldap_freeResult(&result); + + if (rc != NS_LDAP_SUCCESS) + break; + rc = __ns_ldap_nextEntry(cookie, &result, &error); + if (error != NULL) { + status1 = switch_err(rc, error); + if (status1 == NSS_TRYAGAIN) { + free_netgroup_table(&tab); + (void) __ns_ldap_freeError(&error); + (void) __ns_ldap_endEntry(&cookie, + &error); + (void) __ns_ldap_freeError(&error); + return (status1); + } + } + (void) __ns_ldap_freeError(&error); + } + (void) __ns_ldap_freeResult(&result); + (void) __ns_ldap_endEntry(&cookie, &error); (void) __ns_ldap_freeError(&error); - } - (void) __ns_ldap_freeResult(&result); - (void) __ns_ldap_endEntry(&cookie, &error); - (void) __ns_ldap_freeError(&error); - if (status == NSS_SUCCESS || - (rc != NS_LDAP_SUCCESS && rc != NS_LDAP_NOTFOUND)) + if (status == NSS_SUCCESS || + (rc != NS_LDAP_SUCCESS && rc != NS_LDAP_NOTFOUND)) break; } @@ -587,16 +609,16 @@ __netgr_in(void *a, char *netgrname) #ifdef DEBUG (void) fprintf(stdout, "\n[getnetgrent.c: netgr_in]\n"); (void) fprintf(stdout, "\tmachine: argc[%d]='%s' user: " - "argc[%d]='%s',\n\tdomain:argc[%d]='%s' " - "netgroup: argc[%d]='%s'\n", - NSS_NETGR_MACHINE, - PRINT_VAL(ia->arg[NSS_NETGR_MACHINE]), - NSS_NETGR_USER, - PRINT_VAL(ia->arg[NSS_NETGR_USER]), - NSS_NETGR_DOMAIN, - PRINT_VAL(ia->arg[NSS_NETGR_DOMAIN]), - NSS_NETGR_N, - PRINT_VAL(ia->arg[NSS_NETGR_N])); + "argc[%d]='%s',\n\tdomain:argc[%d]='%s' " + "netgroup: argc[%d]='%s'\n", + NSS_NETGR_MACHINE, + PRINT_VAL(ia->arg[NSS_NETGR_MACHINE]), + NSS_NETGR_USER, + PRINT_VAL(ia->arg[NSS_NETGR_USER]), + NSS_NETGR_DOMAIN, + PRINT_VAL(ia->arg[NSS_NETGR_DOMAIN]), + NSS_NETGR_N, + PRINT_VAL(ia->arg[NSS_NETGR_N])); (void) fprintf(stdout, "\tgroups='%s'\n", netgrname); #endif /* DEBUG */ @@ -734,107 +756,115 @@ getnetgr_ldap_getent(ldap_backend_ptr be, void *a) return ((nss_status_t)NSS_SUCCESS); for (;;) { - while (p->cookie == NULL) { - ng = get_next_netgroup(&p->tab); - if (ng == NULL) /* no more */ - break; - - if (_ldap_filter_name(name, ng->name, sizeof (name)) != 0) - break; - - ret = snprintf(searchfilter, sizeof (searchfilter), - _F_SETMEMBER, name); - if (ret >= sizeof (searchfilter) || ret < 0) + while (p->cookie == NULL) { + ng = get_next_netgroup(&p->tab); + if (ng == NULL) /* no more */ + break; + + if (_ldap_filter_name(name, ng->name, + sizeof (name)) != 0) + break; + + ret = snprintf(searchfilter, + sizeof (searchfilter), + _F_SETMEMBER, name); + if (ret >= sizeof (searchfilter) || ret < 0) + break; + + ret = snprintf(userdata, sizeof (userdata), + _F_SETMEMBER_SSD, name); + if (ret >= sizeof (userdata) || ret < 0) + break; + + result = NULL; + rc = __ns_ldap_firstEntry(_NETGROUP, + searchfilter, + _merge_SSD_filter, netgrent_attrs, + NULL, 0, &cookie, + &result, &error, userdata); + (void) __ns_ldap_freeError(&error); + + if (rc == NS_LDAP_SUCCESS && result != NULL) { + p->cookie = cookie; + p->results = result; + break; + } + (void) __ns_ldap_freeResult(&result); + (void) __ns_ldap_endEntry(&cookie, &error); + (void) __ns_ldap_freeError(&error); + } + if (p->cookie == NULL) break; + if (p->results == NULL) { + result = NULL; + rc = __ns_ldap_nextEntry(p->cookie, &result, + &error); + (void) __ns_ldap_freeError(&error); + if (rc == NS_LDAP_SUCCESS && result != NULL) + p->results = result; + else { + (void) __ns_ldap_freeResult(&result); + (void) __ns_ldap_endEntry(&p->cookie, + &error); + (void) __ns_ldap_freeError(&error); + p->cookie = NULL; + } + } + if (p->results == NULL) + continue; - ret = snprintf(userdata, sizeof (userdata), _F_SETMEMBER_SSD, - name); - if (ret >= sizeof (userdata) || ret < 0) - break; + if (p->entry == NULL) + p->entry = p->results->entry; - result = NULL; - rc = __ns_ldap_firstEntry(_NETGROUP, searchfilter, - _merge_SSD_filter, netgrent_attrs, NULL, 0, &cookie, - &result, &error, userdata); - (void) __ns_ldap_freeError(&error); + if (p->entry == NULL) + continue; - if (rc == NS_LDAP_SUCCESS && result != NULL) { - p->cookie = cookie; - p->results = result; - break; + if (p->attrs == NULL) { + attrs = __ns_ldap_getAttr(p->entry, _N_TRIPLE); + if (attrs != NULL && *attrs != NULL) + p->attrs = attrs; } - (void) __ns_ldap_freeResult(&result); - (void) __ns_ldap_endEntry(&cookie, &error); - (void) __ns_ldap_freeError(&error); - } - if (p->cookie == NULL) - break; - if (p->results == NULL) { - result = NULL; - rc = __ns_ldap_nextEntry(p->cookie, &result, &error); - (void) __ns_ldap_freeError(&error); - if (rc == NS_LDAP_SUCCESS && result != NULL) - p->results = result; - else { - (void) __ns_ldap_freeResult(&result); - (void) __ns_ldap_endEntry(&p->cookie, &error); - (void) __ns_ldap_freeError(&error); - p->cookie = NULL; - } - } - if (p->results == NULL) - continue; - - if (p->entry == NULL) - p->entry = p->results->entry; - - if (p->entry == NULL) - continue; - if (p->attrs == NULL) { - attrs = __ns_ldap_getAttr(p->entry, _N_TRIPLE); - if (attrs != NULL && *attrs != NULL) - p->attrs = attrs; - } + if (p->attrs != NULL) { + attrs = p->attrs; + buffer = args->buffer; - if (p->attrs != NULL) { - attrs = p->attrs; - buffer = args->buffer; + if (strlcpy(buffer, *attrs, args->buflen) >= + args->buflen) { + status = NSS_STR_PARSE_ERANGE; + break; + } - if (strlcpy(buffer, *attrs, args->buflen) >= args->buflen) { - status = NSS_STR_PARSE_ERANGE; - break; + rc = split_triple(buffer, &hostname, &username, + &domain); + attrs++; + if (attrs != NULL && *attrs != NULL) + p->attrs = attrs; + else + p->attrs = NULL; + if (rc == 0) { + args->retp[NSS_NETGR_MACHINE] = hostname; + args->retp[NSS_NETGR_USER] = username; + args->retp[NSS_NETGR_DOMAIN] = domain; + args->status = NSS_NETGR_FOUND; + if (p->attrs != NULL) + break; + } } - rc = split_triple(buffer, &hostname, &username, &domain); - attrs++; - if (attrs != NULL && *attrs != NULL) - p->attrs = attrs; - else - p->attrs = NULL; - if (rc == 0) { - args->retp[NSS_NETGR_MACHINE] = hostname; - args->retp[NSS_NETGR_USER] = username; - args->retp[NSS_NETGR_DOMAIN] = domain; - args->status = NSS_NETGR_FOUND; - if (p->attrs != NULL) - break; - } - } + if (p->attrs == NULL) { + rc = add_netgroup_member_entry(p->entry, &p->tab); + if (rc != 0) { + args->status = NSS_NETGR_NO; + break; + } - if (p->attrs == NULL) { - rc = add_netgroup_member_entry(p->entry, &p->tab); - if (rc != 0) { - args->status = NSS_NETGR_NO; - break; + p->entry = p->entry->next; + if (p->entry == NULL) + (void) __ns_ldap_freeResult(&p->results); + if (args->status == NSS_NETGR_FOUND) + break; } - - p->entry = p->entry->next; - if (p->entry == NULL) - (void) __ns_ldap_freeResult(&p->results); - if (args->status == NSS_NETGR_FOUND) - break; - } } return (status); @@ -855,14 +885,14 @@ static nss_status_t netgr_set(ldap_backend_ptr be, void *a) { struct nss_setnetgrent_args *args = - (struct nss_setnetgrent_args *)a; + (struct nss_setnetgrent_args *)a; ldap_backend_ptr get_be; getnetgrent_cookie_t *p; #ifdef DEBUG (void) fprintf(stdout, "\n[getnetgrent.c: netgr_set]\n"); (void) fprintf(stdout, - "\targs->netgroup: %s\n", ISNULL(args->netgroup)); + "\targs->netgroup: %s\n", ISNULL(args->netgroup)); #endif /* DEBUG */ if (args->netgroup == NULL) @@ -945,10 +975,10 @@ _nss_ldap_netgroup_constr(const char *dummy1, const char *dummy2, #ifdef DEBUG (void) fprintf(stdout, - "\n[getnetgrent.c: _nss_ldap_netgroup_constr]\n"); + "\n[getnetgrent.c: _nss_ldap_netgroup_constr]\n"); #endif /* DEBUG */ return ((nss_backend_t *)_nss_ldap_constr(netgroup_ops, - sizeof (netgroup_ops)/sizeof (netgroup_ops[0]), _NETGROUP, - netgrent_attrs, NULL)); + sizeof (netgroup_ops)/sizeof (netgroup_ops[0]), _NETGROUP, + netgrent_attrs, NULL)); } diff --git a/usr/src/lib/nsswitch/ldap/common/ldap_common.c b/usr/src/lib/nsswitch/ldap/common/ldap_common.c index a6537c7b41..db6800bba3 100644 --- a/usr/src/lib/nsswitch/ldap/common/ldap_common.c +++ b/usr/src/lib/nsswitch/ldap/common/ldap_common.c @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -86,27 +86,27 @@ static struct gettablefilter { }; -static nss_status_t +nss_status_t switch_err(int rc, ns_ldap_error_t *error) { switch (rc) { - case NS_LDAP_SUCCESS: + case NS_LDAP_SUCCESS: return (NSS_SUCCESS); - case NS_LDAP_NOTFOUND: + case NS_LDAP_NOTFOUND: return (NSS_NOTFOUND); - case NS_LDAP_PARTIAL: + case NS_LDAP_PARTIAL: return (NSS_TRYAGAIN); - case NS_LDAP_INTERNAL: - if (error && (error->status == LDAP_SERVER_DOWN || - error->status == LDAP_TIMEOUT)) - return (NSS_TRYAGAIN); - else - return (NSS_UNAVAIL); + case NS_LDAP_INTERNAL: + if (error && (error->status == LDAP_SERVER_DOWN || + error->status == LDAP_TIMEOUT)) + return (NSS_TRYAGAIN); + else + return (NSS_UNAVAIL); - default: + default: return (NSS_UNAVAIL); } } @@ -126,15 +126,15 @@ _nss_ldap_lookup(ldap_backend_ptr be, nss_XbyY_args_t *argp, (void) fprintf(stdout, "\n[ldap_common.c: _nss_ldap_lookup]\n"); (void) fprintf(stdout, "\tsearchfilter: %s\n", searchfilter); (void) fprintf(stdout, - "\tuserdata: %s\n", userdata ? userdata : "NULL"); + "\tuserdata: %s\n", userdata ? userdata : "NULL"); (void) fprintf(stdout, "\tdatabase: %s\n", database); #endif /* DEBUG */ (void) __ns_ldap_freeResult(&be->result); if ((rc = __ns_ldap_list(database, searchfilter, init_filter_cb, - be->attrs, NULL, 0, &be->result, &error, NULL, - userdata)) != NS_LDAP_SUCCESS) { + be->attrs, NULL, 0, &be->result, &error, NULL, + userdata)) != NS_LDAP_SUCCESS) { argp->returnval = 0; rc = switch_err(rc, error); (void) __ns_ldap_freeError(&error); @@ -144,7 +144,7 @@ _nss_ldap_lookup(ldap_backend_ptr be, nss_XbyY_args_t *argp, (void) __ns_ldap_freeError(&error); /* callback function */ if ((callbackstat = - be->ldapobj2str(be, argp)) != NSS_STR_PARSE_SUCCESS) { + be->ldapobj2str(be, argp)) != NSS_STR_PARSE_SUCCESS) { goto error_out; } @@ -168,7 +168,7 @@ _nss_ldap_lookup(ldap_backend_ptr be, nss_XbyY_args_t *argp, * for different purpose so ethers has to be treated differently. */ if (argp->buf.result != NULL || - be->db_type == NSS_LDAP_DB_ETHERS) { + be->db_type == NSS_LDAP_DB_ETHERS) { /* file format -> struct */ if (argp->str2ent == NULL) { callbackstat = NSS_STR_PARSE_PARSE; @@ -176,13 +176,13 @@ _nss_ldap_lookup(ldap_backend_ptr be, nss_XbyY_args_t *argp, } callbackstat = (*argp->str2ent)(be->buffer, - be->buflen, - argp->buf.result, - argp->buf.buffer, - argp->buf.buflen); + be->buflen, + argp->buf.result, + argp->buf.buffer, + argp->buf.buflen); if (callbackstat == NSS_STR_PARSE_SUCCESS) { if (be->db_type == NSS_LDAP_DB_ETHERS && - argp->buf.buffer != NULL) { + argp->buf.buffer != NULL) { argp->returnval = argp->buf.buffer; argp->returnlen = strlen(argp->buf.buffer); } else { @@ -249,14 +249,14 @@ _nss_ldap_nocb_lookup(ldap_backend_ptr be, nss_XbyY_args_t *argp, (void) fprintf(stdout, "\tsearchfilter: %s\n", searchfilter); (void) fprintf(stdout, "\tdatabase: %s\n", database); (void) fprintf(stdout, - "\tuserdata: %s\n", userdata ? userdata : "NULL"); + "\tuserdata: %s\n", userdata ? userdata : "NULL"); #endif /* DEBUG */ (void) __ns_ldap_freeResult(&be->result); if ((rc = __ns_ldap_list(database, searchfilter, init_filter_cb, - be->attrs, NULL, 0, &be->result, &error, NULL, - userdata)) != NS_LDAP_SUCCESS) { + be->attrs, NULL, 0, &be->result, &error, NULL, + userdata)) != NS_LDAP_SUCCESS) { argp->returnval = 0; rc = switch_err(rc, error); (void) __ns_ldap_freeError(&error); @@ -412,13 +412,13 @@ _nss_ldap_getent(ldap_backend_ptr be, void *a) next_entry: if (be->enumcookie == NULL) { retcode = __ns_ldap_firstEntry(be->tablename, - be->filter, _merge_SSD_filter, be->attrs, NULL, - 0, &be->enumcookie, - &be->result, &error, _F_GETENT_SSD); + be->filter, _merge_SSD_filter, be->attrs, NULL, + 0, &be->enumcookie, + &be->result, &error, _F_GETENT_SSD); } else { if (be->services_cookie == NULL) { retcode = __ns_ldap_nextEntry(be->enumcookie, - &be->result, &error); + &be->result, &error); } } if (retcode != NS_LDAP_SUCCESS) { @@ -429,7 +429,7 @@ next_entry: } else { /* ns_ldap_entry_t -> file format */ if ((parsestat = be->ldapobj2str(be, argp)) - == NSS_STR_PARSE_SUCCESS) { + == NSS_STR_PARSE_SUCCESS) { if (argp->buf.result != NULL) { /* file format -> struct */ if (argp->str2ent == NULL) { @@ -437,10 +437,10 @@ next_entry: goto error_out; } parsestat = (*argp->str2ent)(be->buffer, - be->buflen, - argp->buf.result, - argp->buf.buffer, - argp->buf.buflen); + be->buflen, + argp->buf.result, + argp->buf.buffer, + argp->buf.buflen); if (parsestat == NSS_STR_PARSE_SUCCESS) { if (be->buffer != NULL) { free(be->buffer); @@ -460,7 +460,7 @@ next_entry: */ argp->returnval = argp->buf.buffer; argp->returnlen = - strlen(argp->buf.buffer) + 1; + strlen(argp->buf.buffer) + 1; } } error_out: diff --git a/usr/src/lib/nsswitch/ldap/common/ldap_common.h b/usr/src/lib/nsswitch/ldap/common/ldap_common.h index deb5ffd642..d6e08680c4 100644 --- a/usr/src/lib/nsswitch/ldap/common/ldap_common.h +++ b/usr/src/lib/nsswitch/ldap/common/ldap_common.h @@ -19,7 +19,7 @@ * CDDL HEADER END */ /* - * Copyright 2006 Sun Microsystems, Inc. All rights reserved. + * Copyright 2007 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ @@ -156,6 +156,7 @@ extern int _ldap_filter_name(char *filter_name, const char *name, int filter_name_size); extern void _nss_services_cookie_free(void **cookieP); +extern nss_status_t switch_err(int rc, ns_ldap_error_t *error); #ifdef DEBUG extern int printresult(ns_ldap_result_t *result); |