]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/filter.c
Remove lint
[openldap] / servers / slapd / filter.c
index 690e62ee3ef1751660b97c0876cc70108a57ae15..70aa4b5e28389ab03a2a44e277c05a6a44f4d762 100644 (file)
@@ -331,7 +331,7 @@ get_filter(
                break;
 
        default:
-               (void) ber_skip_tag( ber, &len );
+               (void) ber_scanf( ber, "x" ); /* skip the element */
 #ifdef NEW_LOGGING
                LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
                           "get_filter: conn %d unknown filter type=%lu\n",
@@ -544,7 +544,11 @@ get_substring_filter(
 #else
                        Debug( LDAP_DEBUG_FILTER, "  INITIAL\n", 0, 0, 0 );
 #endif
-                       if ( f->f_sub_initial != NULL ) {
+
+                       if ( f->f_sub_initial != NULL
+                               || f->f_sub_any != NULL 
+                               || f->f_sub_final != NULL )
+                       {
                                ber_bvfree( value );
                                goto return_error;
                        }
@@ -568,6 +572,12 @@ get_substring_filter(
 #else
                        Debug( LDAP_DEBUG_FILTER, "  ANY\n", 0, 0, 0 );
 #endif
+
+                       if ( f->f_sub_final != NULL ) {
+                               ber_bvfree( value );
+                               goto return_error;
+                       }
+
                        if( ber_bvecadd( &f->f_sub_any, value ) < 0 ) {
                                ber_bvfree( value );
                                goto return_error;
@@ -591,10 +601,12 @@ get_substring_filter(
 #else
                        Debug( LDAP_DEBUG_FILTER, "  FINAL\n", 0, 0, 0 );
 #endif
+
                        if ( f->f_sub_final != NULL ) {
                                ber_bvfree( value );
                                goto return_error;
                        }
+
                        f->f_sub_final = value;
 
                        if( fstr ) {
@@ -690,6 +702,7 @@ filter_free( Filter *f )
                if ( f->f_sub_final != NULL ) {
                        ber_bvfree( f->f_sub_final );
                }
+               ch_free( f->f_sub );
                break;
 
        case LDAP_FILTER_AND: