]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/ava.c
Extend value_match to extract an asserted value from a full value
[openldap] / servers / slapd / ava.c
index 4b797978fa5324a9112e163346b73114f6f4b872..da6a2e3355ae37a296b8e9b24387ad04d394e690 100644 (file)
@@ -21,7 +21,6 @@ ava_free(
     int        freeit
 )
 {
-       ad_free( ava->aa_desc, 1 );
        ber_bvfree( ava->aa_value );
        if ( freeit ) {
                ch_free( (char *) ava );
@@ -43,7 +42,12 @@ get_ava(
        rc = ber_scanf( ber, "{oo}", &type, &value );
 
        if( rc == LBER_ERROR ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
+                          "get_ava:  ber_scanf failure\n" ));
+#else
                Debug( LDAP_DEBUG_ANY, "  get_ava ber_scanf\n", 0, 0, 0 );
+#endif
                *text = "Error decoding attribute value assertion";
                return SLAPD_DISCONNECT;
        }
@@ -53,9 +57,9 @@ get_ava(
        aa->aa_value = NULL;
 
        rc = slap_bv2ad( &type, &aa->aa_desc, text );
+       ch_free( type.bv_val );
 
        if( rc != LDAP_SUCCESS ) {
-               ch_free( type.bv_val );
                ch_free( value.bv_val );
                ch_free( aa );
                return rc;
@@ -65,8 +69,6 @@ get_ava(
        ch_free( value.bv_val );
 
        if( rc != LDAP_SUCCESS ) {
-               ch_free( type.bv_val );
-               ad_free( aa->aa_desc, 1 );
                ch_free( aa );
                return rc;
        }