summaryrefslogtreecommitdiff
path: root/usr/src
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src')
-rw-r--r--usr/src/cmd/nscd/nscd_nswstate.c2
-rw-r--r--usr/src/lib/libsldap/common/ns_reads.c29
-rw-r--r--usr/src/lib/nsswitch/ldap/common/getnetgrent.c322
-rw-r--r--usr/src/lib/nsswitch/ldap/common/ldap_common.c70
-rw-r--r--usr/src/lib/nsswitch/ldap/common/ldap_common.h3
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);