Sisyphus repository
Last update: 1 october 2023 | SRPMs: 18631 | Visits: 37834537
en ru br
ALT Linux repos
S:0.60.0-alt1

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


 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;
 
 
design & coding: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
current maintainer: Michael Shigorin