[Date Prev][Date Next] [Chronological] [Thread] [Top]

Regarding get_substring_filter() (ITS#1625)



Full_Name: Tsurng-Chen Chern
Version: 2.1.0alpha
OS: Solaris 2.8
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (216.249.89.106)


There is a problem with the substring filter parsing in
servers/slapd/filter.c. I'm not sure about what's the proper
way to handle get_substring_filter() function. Here is a
possible solution, The problem occurs when you have more
than 1 wildcard characters in the filter such as (cn=*test*01).

--- openldap-2.1.0alpha/servers/slapd/filter.c  Sun Jan 13 16:43:19 2002
+++ o210a/servers/slapd/filter.c        Mon Mar  4 23:06:40 2002

@@ -594,7 +594,7 @@
                        if( fstr->bv_val ) {
                                int i = fstr->bv_len;
                                filter_escape_value( &value, &escaped );
-                               fstr->bv_len += escaped.bv_len + 2;
+                               fstr->bv_len += escaped.bv_len + 1;
                                fstr->bv_val = ch_realloc( fstr->bv_val,
                                        fstr->bv_len + 1 );
                                strcpy( fstr->bv_val+i, "*" );
@@ -622,7 +622,7 @@
                        if( fstr->bv_val ) {
                                int i = fstr->bv_len;
                                filter_escape_value( &value, &escaped );
-                               fstr->bv_len += escaped.bv_len + 2;
+                               fstr->bv_len += escaped.bv_len + 1;
                                fstr->bv_val = ch_realloc( fstr->bv_val,
                                        fstr->bv_len + 1 );
                                strcpy( fstr->bv_val+i, "*" );