|
|
2ea936 |
From dbe1e300171e04cc328a4f31d0bffcac056e7cfa Mon Sep 17 00:00:00 2001
|
|
|
2ea936 |
From: Alexander Bokovoy <abokovoy@redhat.com>
|
|
|
2ea936 |
Date: Mon, 31 Aug 2020 16:53:47 +0300
|
|
|
2ea936 |
Subject: [PATCH] idviews: clear intermediate target DN in all cases
|
|
|
2ea936 |
|
|
|
2ea936 |
When processing a search request, slapi-nis attempts to detect an ID
|
|
|
2ea936 |
View lookup. A target DN is modified by extracting an ID view name. This
|
|
|
2ea936 |
temporary string is freed in the successful case but left unotouched if
|
|
|
2ea936 |
ID View wasn't requested. As a result, small leaks on each search
|
|
|
2ea936 |
request accumulate and a memory can get lost.
|
|
|
2ea936 |
|
|
|
2ea936 |
Resolves: rhbz#1866113
|
|
|
2ea936 |
|
|
|
2ea936 |
Signed-off-by: Alexander Bokovoy <abokovoy@redhat.com>
|
|
|
2ea936 |
---
|
|
|
2ea936 |
src/back-sch.c | 15 +++++++++------
|
|
|
2ea936 |
1 file changed, 9 insertions(+), 6 deletions(-)
|
|
|
2ea936 |
|
|
|
2ea936 |
diff --git a/src/back-sch.c b/src/back-sch.c
|
|
|
2ea936 |
index 03abbeb..f8b04a3 100644
|
|
|
2ea936 |
--- a/src/back-sch.c
|
|
|
2ea936 |
+++ b/src/back-sch.c
|
|
|
2ea936 |
@@ -1767,6 +1767,7 @@ backend_search_cb(Slapi_PBlock *pb)
|
|
|
2ea936 |
/* Perform another check, now for rewritten DN */
|
|
|
2ea936 |
cbdata.target_dn = slapi_sdn_new_dn_byval(target);
|
|
|
2ea936 |
map_data_foreach_domain(cbdata.state, backend_search_find_set_dn_cb, &cbdata);
|
|
|
2ea936 |
+
|
|
|
2ea936 |
/* Rewritten DN might still be outside of our trees */
|
|
|
2ea936 |
if (cbdata.answer == TRUE) {
|
|
|
2ea936 |
slapi_log_error(SLAPI_LOG_PLUGIN, cbdata.state->plugin_desc->spd_id,
|
|
|
2ea936 |
@@ -1774,19 +1775,21 @@ backend_search_cb(Slapi_PBlock *pb)
|
|
|
2ea936 |
"for \"%s\" with scope %d%s. Filter may get overridden later.\n",
|
|
|
2ea936 |
cbdata.idview, target, cbdata.strfilter, cbdata.scope,
|
|
|
2ea936 |
backend_sch_scope_as_string(cbdata.scope));
|
|
|
2ea936 |
- } else {
|
|
|
2ea936 |
- slapi_sdn_free(&cbdata.target_dn);
|
|
|
2ea936 |
- slapi_ch_free_string(&target);
|
|
|
2ea936 |
- slapi_ch_free_string(&cbdata.idview);
|
|
|
2ea936 |
+ }
|
|
|
2ea936 |
+
|
|
|
2ea936 |
+ slapi_sdn_free(&cbdata.target_dn);
|
|
|
2ea936 |
+ slapi_ch_free_string(&cbdata.idview);
|
|
|
2ea936 |
+
|
|
|
2ea936 |
+ if (cbdata.answer == FALSE) {
|
|
|
2ea936 |
slapi_log_error(SLAPI_LOG_PLUGIN,
|
|
|
2ea936 |
cbdata.state->plugin_desc->spd_id,
|
|
|
2ea936 |
"The search base didn't match any of the containers, "
|
|
|
2ea936 |
"ignoring search\n");
|
|
|
2ea936 |
+ slapi_ch_free_string(&target);
|
|
|
2ea936 |
return 0;
|
|
|
2ea936 |
}
|
|
|
2ea936 |
- } else {
|
|
|
2ea936 |
- slapi_ch_free_string(&target);
|
|
|
2ea936 |
}
|
|
|
2ea936 |
+ slapi_ch_free_string(&target);
|
|
|
2ea936 |
}
|
|
|
2ea936 |
cbdata.answer = FALSE;
|
|
|
2ea936 |
#endif
|
|
|
2ea936 |
--
|
|
|
2ea936 |
2.26.2
|
|
|
2ea936 |
|