summaryrefslogtreecommitdiffstats
path: root/src/back-sch.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/back-sch.c')
-rw-r--r--src/back-sch.c32
1 files changed, 24 insertions, 8 deletions
diff --git a/src/back-sch.c b/src/back-sch.c
index 5a839b3..4e28b2f 100644
--- a/src/back-sch.c
+++ b/src/back-sch.c
@@ -1043,17 +1043,21 @@ backend_search_entry_cb(const char *domain, const char *map, bool_t secure,
slapi_sdn_get_ndn(sdn));
entry = entry_data->e;
#ifdef USE_IPA_IDVIEWS
- entry = slapi_entry_dup(entry_data->e);
if (cbdata->idview != NULL) {
- idview_process_overrides(cbdata, key, map, domain, entry);
- }
+ entry = slapi_entry_dup(entry_data->e);
+ if (entry != NULL) {
+ idview_process_overrides(cbdata, key, map, domain, entry);
- /* slapi_entry_attr_exists() was introduced only in https://fedorahosted.org/389/ticket/47710 */
- is_attr_exists = slapi_entry_attr_find(entry, IPA_IDVIEWS_ATTR_ANCHORUUID, &attr) == 0;
+ /* slapi_entry_attr_exists() was introduced only in https://fedorahosted.org/389/ticket/47710 */
+ is_attr_exists = slapi_entry_attr_find(entry, IPA_IDVIEWS_ATTR_ANCHORUUID, &attr) == 0;
- if (is_attr_exists == TRUE) {
- slapi_entry_attr_delete(entry, IPA_IDVIEWS_ATTR_ANCHORUUID);
- slapi_entry_delete_string(entry, "objectClass", "ipaOverrideTarget");
+ if (is_attr_exists == TRUE) {
+ slapi_entry_attr_delete(entry, IPA_IDVIEWS_ATTR_ANCHORUUID);
+ slapi_entry_delete_string(entry, "objectClass", "ipaOverrideTarget");
+ }
+ } else {
+ entry = entry_data->e;
+ }
}
#endif
backend_entries_to_return_push(cbdata, entry);
@@ -1203,10 +1207,22 @@ static bool_t
backend_search_find_set_dn_cb(const char *group, void *cb_data)
{
struct backend_search_cbdata *cbdata;
+ Slapi_DN *group_dn;
cbdata = 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) {
+ cbdata->answer = TRUE;
+ slapi_sdn_free(&group_dn);
+ return TRUE;
+ }
+
map_data_foreach_map(cbdata->state, group,
backend_search_find_set_dn_in_group_cb, cb_data);
+ slapi_sdn_free(&group_dn);
return TRUE;
}