summaryrefslogtreecommitdiffstats
path: root/ldap/servers/slapd/filterentry.c
diff options
context:
space:
mode:
authorNoriko Hosoi <nhosoi@redhat.com>2007-10-12 18:03:43 +0000
committerNoriko Hosoi <nhosoi@redhat.com>2007-10-12 18:03:43 +0000
commitee385e64f9dff2f36ffa8eebd872f98aadcffbdb (patch)
treeee202c50603315d75268df89ad58398b7e9bc6be /ldap/servers/slapd/filterentry.c
parentad8f6417258a3eca48da8cd8778721fdecc61078 (diff)
downloadds-ee385e64f9dff2f36ffa8eebd872f98aadcffbdb.tar.gz
ds-ee385e64f9dff2f36ffa8eebd872f98aadcffbdb.tar.xz
ds-ee385e64f9dff2f36ffa8eebd872f98aadcffbdb.zip
Resolves: #193724
Summary: "nested" filtered roles result in deadlock (Comment #12) Description: 1. Changed cache_lock to the read-write lock. 2. Instead of using the local vattr_context in vattr_test_filter, use the one set in pblock as much as possible. To achieve the goal, introduced pb_vattr_context to pblock. 3. Increased VATTR_LOOP_COUNT_MAX from 50 to 256. 4. When the loop count hit VATTR_LOOP_COUNT_MAX, it sets LDAP_UNWILLING_TO_PERFORM and returns it to the client.
Diffstat (limited to 'ldap/servers/slapd/filterentry.c')
-rw-r--r--ldap/servers/slapd/filterentry.c12
1 files changed, 6 insertions, 6 deletions
diff --git a/ldap/servers/slapd/filterentry.c b/ldap/servers/slapd/filterentry.c
index 1669bdc3..317c4f24 100644
--- a/ldap/servers/slapd/filterentry.c
+++ b/ldap/servers/slapd/filterentry.c
@@ -861,7 +861,7 @@ slapi_vattr_filter_test_ext_internal(
if ( only_check_access || rc != LDAP_SUCCESS ) {
return( rc );
}
- rc = vattr_test_filter( e, f, FILTER_TYPE_AVA, f->f_ava.ava_type );
+ rc = vattr_test_filter( pb, e, f, FILTER_TYPE_AVA, f->f_ava.ava_type );
break;
case LDAP_FILTER_SUBSTRINGS:
@@ -873,7 +873,7 @@ slapi_vattr_filter_test_ext_internal(
if ( only_check_access || rc != LDAP_SUCCESS ) {
return( rc );
}
- rc = vattr_test_filter( e, f, FILTER_TYPE_SUBSTRING, f->f_sub_type);
+ rc = vattr_test_filter( pb, e, f, FILTER_TYPE_SUBSTRING, f->f_sub_type);
break;
case LDAP_FILTER_GE:
@@ -886,7 +886,7 @@ slapi_vattr_filter_test_ext_internal(
if ( only_check_access || rc != LDAP_SUCCESS ) {
return( rc );
}
- rc = vattr_test_filter( e, f, FILTER_TYPE_AVA, f->f_ava.ava_type);
+ rc = vattr_test_filter( pb, e, f, FILTER_TYPE_AVA, f->f_ava.ava_type);
break;
case LDAP_FILTER_LE:
@@ -899,7 +899,7 @@ slapi_vattr_filter_test_ext_internal(
if ( only_check_access || rc != LDAP_SUCCESS ) {
return( rc );
}
- rc = vattr_test_filter( e, f, FILTER_TYPE_AVA, f->f_ava.ava_type);
+ rc = vattr_test_filter( pb, e, f, FILTER_TYPE_AVA, f->f_ava.ava_type);
break;
case LDAP_FILTER_PRESENT:
@@ -911,7 +911,7 @@ slapi_vattr_filter_test_ext_internal(
if ( only_check_access || rc != LDAP_SUCCESS ) {
return( rc );
}
- rc = vattr_test_filter( e, f, FILTER_TYPE_PRES, f->f_type);
+ rc = vattr_test_filter( pb, e, f, FILTER_TYPE_PRES, f->f_type);
break;
case LDAP_FILTER_APPROX:
@@ -924,7 +924,7 @@ slapi_vattr_filter_test_ext_internal(
if ( only_check_access || rc != LDAP_SUCCESS ) {
return( rc );
}
- rc = vattr_test_filter( e, f, FILTER_TYPE_AVA, f->f_ava.ava_type);
+ rc = vattr_test_filter( pb, e, f, FILTER_TYPE_AVA, f->f_ava.ava_type);
break;
case LDAP_FILTER_EXTENDED: