summaryrefslogtreecommitdiff
path: root/usr/src/lib/nsswitch/ldap
diff options
context:
space:
mode:
authormichen <none@none>2007-10-29 14:31:40 -0700
committermichen <none@none>2007-10-29 14:31:40 -0700
commit18bdb8a7484e018149ac9a2766c97bdea9752c87 (patch)
tree1d76bbec5ea617113bed5e39bc41727f51823f80 /usr/src/lib/nsswitch/ldap
parentb6131d8fb9d81bf7aaa169dfc3f2f24f68825b18 (diff)
downloadillumos-joyent-18bdb8a7484e018149ac9a2766c97bdea9752c87.tar.gz
6612782 Repeated msg "yp_all: failed to get server's name" on cluster node consoles
6616435 nscd process aborts and dumps core with S10U4 6617555 nscd debug mode broken in S10U4 6620843 New nscd rejects databases without a source in nsswitch.conf
Diffstat (limited to 'usr/src/lib/nsswitch/ldap')
-rw-r--r--usr/src/lib/nsswitch/ldap/common/getgrent.c50
-rw-r--r--usr/src/lib/nsswitch/ldap/common/ldap_common.c3
2 files changed, 22 insertions, 31 deletions
diff --git a/usr/src/lib/nsswitch/ldap/common/getgrent.c b/usr/src/lib/nsswitch/ldap/common/getgrent.c
index f20c48a4db..6601f0471b 100644
--- a/usr/src/lib/nsswitch/ldap/common/getgrent.c
+++ b/usr/src/lib/nsswitch/ldap/common/getgrent.c
@@ -121,8 +121,7 @@ _nss_ldap_group2str(ldap_backend_ptr be, nss_XbyY_args_t *argp)
nss_result = NSS_STR_PARSE_PARSE;
goto result_grp2str;
}
- len = snprintf(buffer, buflen, "%s:%s:%s:",
- gname[0], password, gid[0]);
+ len = snprintf(buffer, buflen, "%s:%s:%s:", gname[0], password, gid[0]);
TEST_AND_ADJUST(len, buffer, buflen, result_grp2str);
members = __ns_ldap_getAttrStruct(result->entry, _G_MEM);
@@ -138,12 +137,12 @@ _nss_ldap_group2str(ldap_backend_ptr be, nss_XbyY_args_t *argp)
}
if (firstime) {
len = snprintf(buffer, buflen, "%s",
- members->attrvalue[i]);
+ members->attrvalue[i]);
TEST_AND_ADJUST(len, buffer, buflen, result_grp2str);
firstime = 0;
} else {
len = snprintf(buffer, buflen, ",%s",
- members->attrvalue[i]);
+ members->attrvalue[i]);
TEST_AND_ADJUST(len, buffer, buflen, result_grp2str);
}
}
@@ -173,8 +172,8 @@ getbynam(ldap_backend_ptr be, void *a)
char groupname[SEARCHFILTERLEN];
int ret;
- if (_ldap_filter_name(groupname, argp->key.name, sizeof (groupname))
- != 0)
+ if (_ldap_filter_name(groupname, argp->key.name, sizeof (groupname)) !=
+ 0)
return ((nss_status_t)NSS_NOTFOUND);
ret = snprintf(searchfilter, sizeof (searchfilter),
@@ -187,8 +186,7 @@ getbynam(ldap_backend_ptr be, void *a)
return ((nss_status_t)NSS_NOTFOUND);
return ((nss_status_t)_nss_ldap_lookup(be, argp,
- _GROUP, searchfilter, NULL,
- _merge_SSD_filter, userdata));
+ _GROUP, searchfilter, NULL, _merge_SSD_filter, userdata));
}
@@ -219,8 +217,7 @@ getbygid(ldap_backend_ptr be, void *a)
return ((nss_status_t)NSS_NOTFOUND);
return ((nss_status_t)_nss_ldap_lookup(be, argp,
- _GROUP, searchfilter, NULL,
- _merge_SSD_filter, userdata));
+ _GROUP, searchfilter, NULL, _merge_SSD_filter, userdata));
}
@@ -247,8 +244,6 @@ getbymember(ldap_backend_ptr be, void *a)
int gcnt = (int)0;
char **groupvalue, **membervalue;
nss_status_t lstat;
- nss_XbyY_args_t argb;
- static nss_XbyY_buf_t *gb;
struct nss_groupsbymem *argp = (struct nss_groupsbymem *)a;
char searchfilter[SEARCHFILTERLEN];
char userdata[SEARCHFILTERLEN];
@@ -259,10 +254,6 @@ getbymember(ldap_backend_ptr be, void *a)
gid_t gid;
int ret;
- /* LINTED E_EXPR_NULL_EFFECT */
- NSS_XbyY_ALLOC(&gb, sizeof (struct group), NSS_BUFLEN_GROUP);
- NSS_XbyY_INIT(&argb, gb->result, gb->buffer, gb->buflen, 0);
-
if (strcmp(argp->username, "") == 0 ||
strcmp(argp->username, "root") == 0)
return ((nss_status_t)NSS_NOTFOUND);
@@ -279,9 +270,8 @@ getbymember(ldap_backend_ptr be, void *a)
return ((nss_status_t)NSS_NOTFOUND);
gcnt = (int)argp->numgids;
- lstat = (nss_status_t)_nss_ldap_nocb_lookup(be, &argb,
- _GROUP, searchfilter, NULL,
- _merge_SSD_filter, userdata);
+ lstat = (nss_status_t)_nss_ldap_nocb_lookup(be, NULL,
+ _GROUP, searchfilter, NULL, _merge_SSD_filter, userdata);
if (lstat != (nss_status_t)NS_LDAP_SUCCESS)
return ((nss_status_t)lstat);
if (be->result == NULL)
@@ -295,17 +285,18 @@ getbymember(ldap_backend_ptr be, void *a)
for (j = 0; membervalue[j]; j++) {
if (strcmp(membervalue[j], username) == NULL) {
groupvalue = __ns_ldap_getAttr(curEntry,
- "gidnumber");
+ "gidnumber");
gid = (gid_t)strtol(groupvalue[0],
- (char **)NULL, 10);
+ (char **)NULL, 10);
if (argp->numgids < argp->maxgids) {
- for (k = 0; k < argp->numgids;
- k++) {
- if (argp->gid_array[k] == gid)
+ for (k = 0; k < argp->numgids;
+ k++) {
+ if (argp->gid_array[k]
+ == gid)
/* already exists */
- break;
- }
- if (k == argp->numgids)
+ break;
+ }
+ if (k == argp->numgids)
argp->gid_array[argp->numgids++]
= gid;
}
@@ -317,7 +308,6 @@ getbymember(ldap_backend_ptr be, void *a)
}
(void) __ns_ldap_freeResult((ns_ldap_result_t **)&be->result);
- NSS_XbyY_FREE(&gb);
if (gcnt == argp->numgids)
return ((nss_status_t)NSS_NOTFOUND);
@@ -342,6 +332,6 @@ _nss_ldap_group_constr(const char *dummy1, const char *dummy2,
{
return ((nss_backend_t *)_nss_ldap_constr(gr_ops,
- sizeof (gr_ops)/sizeof (gr_ops[0]), _GROUP, gr_attrs,
- _nss_ldap_group2str));
+ sizeof (gr_ops)/sizeof (gr_ops[0]), _GROUP, gr_attrs,
+ _nss_ldap_group2str));
}
diff --git a/usr/src/lib/nsswitch/ldap/common/ldap_common.c b/usr/src/lib/nsswitch/ldap/common/ldap_common.c
index db6800bba3..46284899c8 100644
--- a/usr/src/lib/nsswitch/ldap/common/ldap_common.c
+++ b/usr/src/lib/nsswitch/ldap/common/ldap_common.c
@@ -257,7 +257,8 @@ _nss_ldap_nocb_lookup(ldap_backend_ptr be, nss_XbyY_args_t *argp,
if ((rc = __ns_ldap_list(database, searchfilter, init_filter_cb,
be->attrs, NULL, 0, &be->result, &error, NULL,
userdata)) != NS_LDAP_SUCCESS) {
- argp->returnval = 0;
+ if (argp != NULL)
+ argp->returnval = 0;
rc = switch_err(rc, error);
(void) __ns_ldap_freeError(&error);
return (rc);