From fb55668f49fca57f6649321f9947e50c6cae7700 Mon Sep 17 00:00:00 2001 From: Quanah Gibson-Mount Date: Mon, 8 Sep 2008 20:54:14 +0000 Subject: [PATCH] ITS#5679 --- CHANGES | 1 + servers/slapd/overlays/translucent.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/CHANGES b/CHANGES index 319a37fa44..ddb7c3ace8 100644 --- a/CHANGES +++ b/CHANGES @@ -33,6 +33,7 @@ OpenLDAP 2.4.12 Engineering Fixed slapo-rwm callback cleanup (ITS#5601,ITS#5687) Fixed slapo-rwm attr mapping and merging (ITS#5624) Fixed slapo-rwm objectClass filtering (ITS#5647) + Fixed slapo-translucent filter usage on merged entries (ITS#5679) Fixed slapo-unique filter validation (ITS#5581) Fixed slapo-unique suffix testing (ITS#5641) Build Environment diff --git a/servers/slapd/overlays/translucent.c b/servers/slapd/overlays/translucent.c index 7f91cff5e5..555284ec8b 100644 --- a/servers/slapd/overlays/translucent.c +++ b/servers/slapd/overlays/translucent.c @@ -663,6 +663,7 @@ static int translucent_search_cb(Operation *op, SlapReply *rs) { Entry *le, *re; Attribute *a, *ax, *an, *as = NULL; int rc; + int test_f = 0; tc = op->o_callback->sc_private; @@ -715,6 +716,7 @@ static int translucent_search_cb(Operation *op, SlapReply *rs) { Entry *tmp = entry_dup( re ); be_entry_release_r( op, re ); re = tmp; + test_f = 1; } } else { /* Else we have remote, get local */ @@ -795,7 +797,16 @@ static int translucent_search_cb(Operation *op, SlapReply *rs) { /* send it now */ rs->sr_entry = re; rs->sr_flags |= REP_ENTRY_MUSTBEFREED; - rc = SLAP_CB_CONTINUE; + if ( test_f ) { + rc = test_filter( op, rs->sr_entry, tc->orig ); + if ( rc == LDAP_COMPARE_TRUE ) { + rc = SLAP_CB_CONTINUE; + } else { + rc = 0; + } + } else { + rc = SLAP_CB_CONTINUE; + } } } else if ( le ) { /* Only a local entry: remote was deleted -- 2.39.5