389-ds-base/0062-Issue-6641-Fix-memory-leaks.patch
Masahiro Matsuya 6a3edb664d
Bump version to 1.4.3.39-16
- Resolves: RHEL-80491 - [RFE] Extend log of operations statistics in access log with nentries (#3729) [rhel-8.10.z]
- Resolves: RHEL-87191 - Crash if repl keep-alive entry can not be deleted (#6895) [rhel-8.10.z]
- Resolves: RHEL-89785 - Mask password hashes in audit logs (#6884) [rhel-8.10.z]
- Resolves: RHEL-111226 - Incorrect pwdpolicysubentry returned for a subtree pwpolicy in a local db link (#6819) [rhel-8.10.z]
- Resolves: RHEL-113976 - Make user subtree policy creation idempotent (#6936) [rhel-8.10.z]
- Resolves: RHEL-117457 - Some replication status data are reset upon receiving Conn_ABORT for an asynchronous update operation (#6470) [rhel-8.10.z]
- Resolves: RHEL-117752 - RFE Extend log of operations statistics in access log with nentries (#3729) [rhel-8.10.z]
- Resolves: RHEL-117759 - [RFE] subtree search statistics for index lookup (#5710) [rhel-8.10.z]
- Resolves: RHEL-117765 - statistics about index lookup report a wrong duration (#6764) [rhel-8.10.z]
- Resolves: RHEL-123228 - Improve error message when bulk import converts invalid password scheme (#6787) [rhel-8.10.z]
- Resolves: RHEL-123241 - modrdn fails when a user is member of multiple groups (#6641) [rhel-8.10.z]
- Resolves: RHEL-123254 - Fix memory leaks in memberof plugin (#6641) [rhel-8.10.z]
- Resolves: RHEL-123269 - When deferred memberof update is enabled, the nested membership are never computed (#6933) [rhel-8.10.z]
- Resolves: RHEL-123276 - The parentId attribute is indexed with improper matchingRules (#6928) [rhel-8.10.z]
- Resolves: RHEL-123363 - On large DB unlimited IDL scan limit reduces performance (#6966) [rhel-8.10.z]
- Resolves: RHEL-123365 - Improve the way to detect asynchronous operation failure (#6979) [rhel-8.10.z]
- Resolves: RHEL-123920 - MemberOf plugin logs null attribute name (#7047) [rhel-8.10.z]
- Resolves: RHEL-126512 - The new ipahealthcheck test ipahealthcheck.ipa.roles reports error incorrectly (#7032) [rhel-8.10.z]
- Resolves: RHEL-129578 - Revise time skew check in healthcheck tool (#6947) [rhel-8.10.z]
- Resolves: RHEL-130900 - Update changelog trimming logging (#6901) [rhel-8.10.z]
2025-11-26 19:04:21 +09:00

77 lines
3.7 KiB
Diff

From 4a17dc8ef8f226b9d733f3f8fc72bce5e506eb40 Mon Sep 17 00:00:00 2001
From: Viktor Ashirov <vashirov@redhat.com>
Date: Wed, 10 Sep 2025 13:16:26 +0200
Subject: [PATCH] Issue 6641 - Fix memory leaks
Description:
Partial backport from 9cede9cdcbfb10e864ba0d91053efdabbe937eca
Relates: https://github.com/389ds/389-ds-base/issues/6910
(cherry picked from commit cec5596acb0fb82ca34ee98b7881312dd7ba602c)
Signed-off-by: Masahiro Matsuya <mmatsuya@redhat.com>
---
ldap/servers/plugins/automember/automember.c | 7 ++++---
ldap/servers/plugins/memberof/memberof.c | 13 ++++++++++---
2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/ldap/servers/plugins/automember/automember.c b/ldap/servers/plugins/automember/automember.c
index fde92ee12..1b1da39b3 100644
--- a/ldap/servers/plugins/automember/automember.c
+++ b/ldap/servers/plugins/automember/automember.c
@@ -1755,9 +1755,10 @@ automember_update_member_value(Slapi_Entry *member_e, const char *group_dn, char
mod_pb = slapi_pblock_new();
/* Do a single mod with error overrides for DEL/ADD */
- result = slapi_single_modify_internal_override(mod_pb, slapi_sdn_new_dn_byval(group_dn), mods,
- automember_get_plugin_id(), 0);
-
+ Slapi_DN *sdn = slapi_sdn_new_normdn_byref(group_dn);
+ result = slapi_single_modify_internal_override(mod_pb, sdn, mods,
+ automember_get_plugin_id(), 0);
+ slapi_sdn_free(&sdn);
if(add){
if (result != LDAP_SUCCESS) {
slapi_log_err(SLAPI_LOG_ERR, AUTOMEMBER_PLUGIN_SUBSYSTEM,
diff --git a/ldap/servers/plugins/memberof/memberof.c b/ldap/servers/plugins/memberof/memberof.c
index f3dc7cf00..ce1788e35 100644
--- a/ldap/servers/plugins/memberof/memberof.c
+++ b/ldap/servers/plugins/memberof/memberof.c
@@ -1647,6 +1647,7 @@ memberof_call_foreach_dn(Slapi_PBlock *pb __attribute__((unused)), Slapi_DN *sdn
/* We already did the search for this backend, don't
* do it again when we fall through */
do_suffix_search = PR_FALSE;
+ slapi_pblock_init(search_pb);
}
}
} else if (!all_backends) {
@@ -3745,6 +3746,10 @@ memberof_replace_list(Slapi_PBlock *pb, MemberOfConfig *config, Slapi_DN *group_
pre_index++;
} else {
+ if (pre_index >= pre_total || post_index >= post_total) {
+ /* Don't overrun pre_array/post_array */
+ break;
+ }
/* decide what to do */
int cmp = memberof_compare(
config,
@@ -4438,10 +4443,12 @@ memberof_add_memberof_attr(LDAPMod **mods, const char *dn, char *add_oc)
while (1) {
slapi_pblock_init(mod_pb);
-
+ Slapi_DN *sdn = slapi_sdn_new_normdn_byref(dn);
/* Internal mod with error overrides for DEL/ADD */
- rc = slapi_single_modify_internal_override(mod_pb, slapi_sdn_new_normdn_byref(dn), single_mod,
- memberof_get_plugin_id(), SLAPI_OP_FLAG_BYPASS_REFERRALS);
+ rc = slapi_single_modify_internal_override(mod_pb, sdn, single_mod,
+ memberof_get_plugin_id(),
+ SLAPI_OP_FLAG_BYPASS_REFERRALS);
+ slapi_sdn_free(&sdn);
if (rc == LDAP_OBJECT_CLASS_VIOLATION) {
if (!add_oc || added_oc) {
/*
--
2.51.1