Skip to content
Snippets Groups Projects
Commit 305f6c4f authored by Kurt Zeilenga's avatar Kurt Zeilenga
Browse files

Honor disclose in compare_entry()

parent 5d169e40
No related branches found
No related tags found
No related merge requests found
......@@ -409,19 +409,22 @@ static int compare_entry(
Entry *e,
AttributeAssertion *ava )
{
int rc;
int rc = LDAP_COMPARE_FALSE;
Attribute *a;
if ( ! access_allowed( op, e,
ava->aa_desc, &ava->aa_value, ACL_COMPARE, NULL ) )
{
return LDAP_INSUFFICIENT_ACCESS;
rc = LDAP_INSUFFICIENT_ACCESS;
goto done;
}
a = attrs_find( e->e_attrs, ava->aa_desc );
if( a == NULL ) return LDAP_NO_SUCH_ATTRIBUTE;
if( a == NULL ) {
rc = LDAP_NO_SUCH_ATTRIBUTE;
goto done;
}
rc = LDAP_COMPARE_FALSE;
for(a = attrs_find( e->e_attrs, ava->aa_desc );
a != NULL;
a = attrs_find( a->a_next, ava->aa_desc ))
......@@ -436,13 +439,23 @@ static int compare_entry(
if ( value_find_ex( ava->aa_desc,
SLAP_MR_ATTRIBUTE_VALUE_NORMALIZED_MATCH |
SLAP_MR_ASSERTED_VALUE_NORMALIZED_MATCH,
a->a_nvals,
&ava->aa_value, op->o_tmpmemctx ) == 0 )
a->a_nvals, &ava->aa_value, op->o_tmpmemctx ) == 0 )
{
rc = LDAP_COMPARE_TRUE;
break;
}
}
done:
#ifdef LDAP_ACL_HONOR_DISCLOSE
if( rc != LDAP_COMPARE_TRUE && rc != LDAP_COMPARE_FALSE ) {
if ( ! access_allowed( op, e,
slap_schema.si_ad_entry, NULL, ACL_DISCLOSE, NULL ) )
{
rc = LDAP_NO_SUCH_OBJECT;
}
}
#endif
return rc;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment