Group :: System/Base
RPM: slapi-nis
Main Changelog Spec Patches Sources Download Gear Bugs and FR Repocop
Patch: slapi-nis-0.56.7-alt.patch
Download
Download
src/back-nis.c | 3 +++
src/back-sch-nss.c | 13 ++++++++-----
src/back-sch.c | 6 ++++--
tests/wrap-pam.c | 2 +-
4 files changed, 16 insertions(+), 8 deletions(-)
diff --git a/src/back-nis.c b/src/back-nis.c
index adf378e..2001222 100644
--- a/src/back-nis.c
+++ b/src/back-nis.c
@@ -488,6 +488,9 @@ backend_map_config_filter(const char *format,
}
}
ret = malloc(l + 1);
+ if (ret == NULL) {
+ return NULL;
+ }
for (i = j = 0; format[i] != '\0'; i++) {
if (format[i] == '%') {
switch (format[i + 1]) {
diff --git a/src/back-sch-nss.c b/src/back-sch-nss.c
index df04a96..b595f3b 100644
--- a/src/back-sch-nss.c
+++ b/src/back-sch-nss.c
@@ -589,19 +589,22 @@ repeat:
return NULL;
}
- do {
+ for(rc = NSS_STATUS_TRYAGAIN; rc == NSS_STATUS_TRYAGAIN;) {
rc = backend_nss_getgrouplist(ctx, user_name, pwd.pw_gid,
grouplist, &ngroups,
&lerrno);
- if ((rc != NSS_STATUS_SUCCESS)) {
- tmp_list = realloc(grouplist, ngroups * sizeof(gid_t));
- if (tmp_list == NULL) {
+ if (rc == NSS_STATUS_TRYAGAIN) {
+ tmp_list = NULL;
+ if (lerrno == ERANGE) {
+ tmp_list = realloc(grouplist, ngroups * sizeof(gid_t));
+ }
+ if ((tmp_list == NULL) || (lerrno == ENOMEM)) {
free(grouplist);
return NULL;
}
grouplist = tmp_list;
}
- } while (rc != NSS_STATUS_SUCCESS);
+ }
entries = calloc(ngroups + 1, sizeof(entries[0]));
if (entries == NULL) {
diff --git a/src/back-sch.c b/src/back-sch.c
index d806627..172d619 100644
--- a/src/back-sch.c
+++ b/src/back-sch.c
@@ -1369,8 +1369,9 @@ backend_search_find_set_dn_cb(const char *group, void *cb_data)
/* Check the group itself. */
group_dn = slapi_sdn_new_dn_byval(group);
- if (slapi_sdn_scope_test(group_dn, cbdata->target_dn,
- cbdata->scope) == 1) {
+ if (backend_should_descend(group_dn,
+ cbdata->target_dn,
+ cbdata->scope)) {
cbdata->answer = TRUE;
slapi_sdn_free(&group_dn);
return TRUE;
@@ -1792,6 +1793,7 @@ backend_search_cb(Slapi_PBlock *pb)
slapi_ch_free_string(&target);
if (cbdata.answer == FALSE) {
/* None of the configured trees in the sets matched the target at all, ignore search */
+ slapi_sdn_free(&cbdata.target_dn);
return 0;
}
}
diff --git a/tests/wrap-pam.c b/tests/wrap-pam.c
index 45fa0fc..136aae1 100644
--- a/tests/wrap-pam.c
+++ b/tests/wrap-pam.c
@@ -90,7 +90,7 @@ pam_numerror(const char *name)
}
const char *
-pam_strerror(pam_handle_t *pamh, int errnum)
+pam_strerror(const pam_handle_t *pamh, int errnum)
{
unsigned int i;