diff options
| author | michen <none@none> | 2007-10-29 14:31:40 -0700 |
|---|---|---|
| committer | michen <none@none> | 2007-10-29 14:31:40 -0700 |
| commit | 18bdb8a7484e018149ac9a2766c97bdea9752c87 (patch) | |
| tree | 1d76bbec5ea617113bed5e39bc41727f51823f80 /usr/src/lib/nsswitch/ldap | |
| parent | b6131d8fb9d81bf7aaa169dfc3f2f24f68825b18 (diff) | |
| download | illumos-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.c | 50 | ||||
| -rw-r--r-- | usr/src/lib/nsswitch/ldap/common/ldap_common.c | 3 |
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); |
