]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/filter.c
rework objectClass mucking to use syntax "pretty" routine
[openldap] / servers / slapd / filter.c
index 19acd9e38dda5f906256a8a1577f33bd8e43f396..34fa6b9f69f32555a41c949841cc8b27af428891 100644 (file)
@@ -278,6 +278,7 @@ get_filter(
 
        if( err != LDAP_SUCCESS && err != SLAPD_DISCONNECT ) {
                /* ignore error */
+               *text = NULL;
                f.f_choice = SLAPD_FILTER_COMPUTED;
                f.f_result = SLAPD_COMPARE_UNDEFINED;
                err = LDAP_SUCCESS;
@@ -372,7 +373,13 @@ get_ssa(
        rc = slap_bv2ad( &desc, &ssa.sa_desc, text );
 
        if( rc != LDAP_SUCCESS ) {
-               return LDAP_SUCCESS;
+               /* skip over the rest of this filter */
+               for ( tag = ber_first_element( ber, &len, &last );
+                       tag != LBER_DEFAULT;
+                       tag = ber_next_element( ber, &len, last ) ) {
+                       ber_scanf( ber, "x" );
+               }
+               return rc;
        }
 
        rc = LDAP_PROTOCOL_ERROR;
@@ -602,8 +609,8 @@ filter_free( Filter *f )
 {
        Operation op;
 
-       op.o_tmpmemctx = NULL;
-       op.o_tmpmfuncs = &ch_mfuncs;
+       op.o_tmpmemctx = sl_context( f );
+       op.o_tmpmfuncs = &sl_mfuncs;
        filter_free_x( &op, f );
 }