Diff for /servers/slapd/ava.c between versions 1.19 and 1.35

version 1.19, 2000/06/06 17:43:19 version 1.35, 2003/11/27 00:17:15
Line 1 Line 1
 /* $OpenLDAP: pkg/ldap/servers/slapd/ava.c,v 1.18 2000/05/24 21:27:33 kurt Exp $ */  
 /*  
  * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved.  
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file  
  */  
 /* ava.c - routines for dealing with attribute value assertions */  /* ava.c - routines for dealing with attribute value assertions */
   /* $OpenLDAP: pkg/ldap/servers/slapd/ava.c,v 1.34 2003/04/10 23:29:29 hyc Exp $ */
   /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
    *
    * Copyright 1998-2003 The OpenLDAP Foundation.
    * All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted only as authorized by the OpenLDAP
    * Public License.
    *
    * A copy of this license is available in the file LICENSE in the
    * top-level directory of the distribution or, alternatively, at
    * <http://www.OpenLDAP.org/license.html>.
    */
   /* Portions Copyright (c) 1995 Regents of the University of Michigan.
    * All rights reserved.
    *
    * Redistribution and use in source and binary forms are permitted
    * provided that this notice is preserved and that due credit is given
    * to the University of Michigan at Ann Arbor. The name of the University
    * may not be used to endorse or promote products derived from this
    * software without specific prior written permission. This software
    * is provided ``as is'' without express or implied warranty.
    */
   
 #include "portable.h"  #include "portable.h"
   
Line 17 Line 36
   
 void  void
 ava_free(  ava_free(
     AttributeAssertion *ava,          Operation *op,
     int freeit          AttributeAssertion *ava,
           int     freeit
 )  )
 {  {
         ad_free( ava->aa_desc, 1 );          op->o_tmpfree( ava->aa_value.bv_val, op->o_tmpmemctx );
         ber_bvfree( ava->aa_value );  
         if ( freeit ) {          if ( freeit ) {
                 ch_free( (char *) ava );                  op->o_tmpfree( (char *) ava, op->o_tmpmemctx );
         }          }
 }  }
   
 int  int
 get_ava(  get_ava(
     BerElement  *ber,          Operation *op,
     AttributeAssertion  **ava,          BerElement      *ber,
           AttributeAssertion      **ava,
         unsigned usage,          unsigned usage,
         const char **text          const char **text
 )  )
 {  {
         int rc;          int rc;
         struct berval type, value, *nvalue;          ber_tag_t rtag;
           struct berval type, value;
         AttributeAssertion *aa;          AttributeAssertion *aa;
   
         rc = ber_scanf( ber, "{oo}", &type, &value );          rtag = ber_scanf( ber, "{mm}", &type, &value );
   
         if( rc == LBER_ERROR ) {          if( rtag == LBER_ERROR ) {
   #ifdef NEW_LOGGING
                   LDAP_LOG( FILTER, ERR, "get_ava:  ber_scanf failure\n", 0, 0, 0 );
   #else
                 Debug( LDAP_DEBUG_ANY, "  get_ava ber_scanf\n", 0, 0, 0 );                  Debug( LDAP_DEBUG_ANY, "  get_ava ber_scanf\n", 0, 0, 0 );
   #endif
                 *text = "Error decoding attribute value assertion";                  *text = "Error decoding attribute value assertion";
                 return SLAPD_DISCONNECT;                  return SLAPD_DISCONNECT;
         }          }
   
         aa = ch_malloc( sizeof( AttributeAssertion ) );          aa = op->o_tmpalloc( sizeof( AttributeAssertion ), op->o_tmpmemctx );
         aa->aa_desc = NULL;          aa->aa_desc = NULL;
         aa->aa_value = NULL;          aa->aa_value.bv_val = NULL;
   
         rc = slap_bv2ad( &type, &aa->aa_desc, text );          rc = slap_bv2ad( &type, &aa->aa_desc, text );
   
         if( rc != LDAP_SUCCESS ) {          if( rc != LDAP_SUCCESS ) {
                 ch_free( type.bv_val );                  op->o_tmpfree( aa, op->o_tmpmemctx );
                 ch_free( value.bv_val );  
                 ch_free( aa );  
                 return rc;                  return rc;
         }          }
   
         rc = value_normalize( aa->aa_desc, usage, &value, &nvalue, text );          rc = asserted_value_validate_normalize(
         ch_free( value.bv_val );                  aa->aa_desc, ad_mr(aa->aa_desc, usage),
                   usage, &value, &aa->aa_value, text, op->o_tmpmemctx );
   
         if( rc != LDAP_SUCCESS ) {          if( rc != LDAP_SUCCESS ) {
                 ch_free( type.bv_val );                  op->o_tmpfree( aa, op->o_tmpmemctx );
                 ad_free( aa->aa_desc, 1 );  
                 ch_free( aa );  
                 return rc;                  return rc;
         }          }
   
         aa->aa_value = nvalue;  
         *ava = aa;          *ava = aa;
   
         return LDAP_SUCCESS;          return LDAP_SUCCESS;
 }  }
   

Removed from v.1.19  
changed lines
  Added in v.1.35


______________
© Copyright 1998-2020, OpenLDAP Foundation, info@OpenLDAP.org