This is an automated email from the git hooks/post-receive script.
mreynolds pushed a commit to branch 389-ds-base-1.4.0 in repository 389-ds-base.
commit 41a8e4c600ef06060ea15220b86455a21dec256f Author: Ludwig Krispenz lkrispen@redhat.com AuthorDate: Thu May 23 11:11:25 2019 +0000
Ticket 50340 - 2nd try - structs for diabled plugins will not be freed
Bug: when plugins are loaded from dse.ldif enabled plugins will be added to the list of the plugin type and freed when plugins are stopped. But the memory allocated for disabled plugins will remain allocated and and be reported.
Fix: The previous fix did free not enabled plugins in plugin_setup, but that caused a lot of issues. This patch frees not enabled plugins in plugin_dependency_freeall
Reviewed by: ?
Signed-off-by: Mark Reynolds mreynolds@redhat.com --- ldap/servers/slapd/plugin.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)
diff --git a/ldap/servers/slapd/plugin.c b/ldap/servers/slapd/plugin.c index 7dfab84..0b10678 100644 --- a/ldap/servers/slapd/plugin.c +++ b/ldap/servers/slapd/plugin.c @@ -1914,13 +1914,18 @@ void plugin_dependency_freeall() { entry_and_plugin_t *iterp, *nextp; + char *value;
/* free the plugin dependency entry list */ iterp = dep_plugin_entries; while (iterp) { nextp = iterp->next; + if ((value = slapi_entry_attr_get_charptr(iterp->e, ATTR_PLUGIN_ENABLED)) && + !strcasecmp(value, "off")) { + plugin_free(iterp->plugin); + } + slapi_ch_free_string(&value); slapi_entry_free(iterp->e); - /* plugin_free(iterp->plugin); */ slapi_ch_free((void **)&iterp); iterp = nextp; } @@ -3031,7 +3036,7 @@ plugin_setup(Slapi_Entry *plugin_entry, struct slapi_componentid *group, slapi_p add_plugin_entry_dn(dn_copy); }
- if (add_entry && enabled) { + if (add_entry) { /* make a copy of the plugin entry for our own use because it will be freed later by the caller */ Slapi_Entry *e_copy = slapi_entry_dup(plugin_entry); @@ -3040,7 +3045,7 @@ plugin_setup(Slapi_Entry *plugin_entry, struct slapi_componentid *group, slapi_p }
PLUGIN_CLEANUP: - if (status || !enabled) { + if (status) { plugin_free(plugin); } slapi_ch_free((void **)&configdir);
389-commits@lists.fedoraproject.org