summaryrefslogtreecommitdiffstats
path: root/ldap/servers/slapd/filterentry.c
diff options
context:
space:
mode:
authorRich Megginson <rmeggins@redhat.com>2010-03-25 11:51:26 -0600
committerRich Megginson <rmeggins@redhat.com>2010-03-25 12:26:30 -0600
commitc1d2e7461ac41f39f5f27f3d9dcd6084bb4435a5 (patch)
tree0f4a7bb06d66e241bead206087bc3d04256eebb0 /ldap/servers/slapd/filterentry.c
parent742032c11f0dabbdc80ba204801c27c4cbe305a4 (diff)
downloadds-c1d2e7461ac41f39f5f27f3d9dcd6084bb4435a5.tar.gz
ds-c1d2e7461ac41f39f5f27f3d9dcd6084bb4435a5.tar.xz
ds-c1d2e7461ac41f39f5f27f3d9dcd6084bb4435a5.zip
Bug 576074 - search filters with parentheses fail
https://bugzilla.redhat.com/show_bug.cgi?id=576074 Resolves: bug 576074 Bug Description: search filters with parentheses fail Reviewed by: nhosoi (Thanks!) Branch: HEAD Fix Description: PCRE requires '(' and ')' to be escaped to match a literal parenthesis. Otherwise, it thinks the parenthesis is used for grouping. Platforms tested: RHEL5 x86_64 Flag Day: no Doc impact: no
Diffstat (limited to 'ldap/servers/slapd/filterentry.c')
-rw-r--r--ldap/servers/slapd/filterentry.c19
1 files changed, 16 insertions, 3 deletions
diff --git a/ldap/servers/slapd/filterentry.c b/ldap/servers/slapd/filterentry.c
index f5666763..f163b472 100644
--- a/ldap/servers/slapd/filterentry.c
+++ b/ldap/servers/slapd/filterentry.c
@@ -647,7 +647,7 @@ test_filter_list(
}
void
-filter_strcpy_special( char *d, char *s )
+filter_strcpy_special_ext( char *d, char *s, int flags )
{
for ( ; *s; s++ ) {
switch ( *s ) {
@@ -660,14 +660,27 @@ filter_strcpy_special( char *d, char *s )
case '^':
case '$':
*d++ = '\\';
- /* FALL */
+ break;
+ case '(':
+ case ')':
+ if (flags & FILTER_STRCPY_ESCAPE_PARENS) {
+ *d++ = '\\';
+ }
+ break;
default:
- *d++ = *s;
+ break;
}
+ *d++ = *s;
}
*d = '\0';
}
+void
+filter_strcpy_special( char *d, char *s )
+{
+ return filter_strcpy_special_ext(d, s, 0);
+}
+
int test_substring_filter(
Slapi_PBlock *pb,
Slapi_Entry *e,