X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fvalue.c;h=a1e081664d1d40f043fc7f1d652bf7c1cc186b08;hb=ed471a4d53b9bcd2cc89410743ffb4bd58b5fc05;hp=b1288d07369ce3e7b24aaf0afc99196d40379cd0;hpb=976c35fbf050e045e97963340c990c57db55c87c;p=openldap diff --git a/servers/slapd/value.c b/servers/slapd/value.c index b1288d0736..a1e081664d 100644 --- a/servers/slapd/value.c +++ b/servers/slapd/value.c @@ -31,15 +31,35 @@ value_add( ; /* NULL */ if ( *vals == NULL ) { - *vals = (BerVarray) ch_malloc( (nn + 1) + *vals = (BerVarray) SLAP_MALLOC( (nn + 1) * sizeof(struct berval) ); + if( *vals == NULL ) { +#ifdef NEW_LOGGING + LDAP_LOG( OPERATION, ERR, + "value_add: SLAP_MALLOC failed.\n", 0, 0, 0 ); +#else + Debug(LDAP_DEBUG_TRACE, + "value_add: SLAP_MALLOC failed.\n", 0, 0, 0 ); +#endif + return LBER_ERROR_MEMORY; + } n = 0; } else { for ( n = 0; (*vals)[n].bv_val != NULL; n++ ) { ; /* Empty */ } - *vals = (BerVarray) ch_realloc( (char *) *vals, + *vals = (BerVarray) SLAP_REALLOC( (char *) *vals, (n + nn + 1) * sizeof(struct berval) ); + if( *vals == NULL ) { +#ifdef NEW_LOGGING + LDAP_LOG( OPERATION, ERR, + "value_add: SLAP_MALLOC failed.\n", 0, 0, 0 ); +#else + Debug(LDAP_DEBUG_TRACE, + "value_add: SLAP_MALLOC failed.\n", 0, 0, 0 ); +#endif + return LBER_ERROR_MEMORY; + } } v2 = *vals + n; @@ -63,14 +83,34 @@ value_add_one( BerVarray v2; if ( *vals == NULL ) { - *vals = (BerVarray) ch_malloc( 2 * sizeof(struct berval) ); + *vals = (BerVarray) SLAP_MALLOC( 2 * sizeof(struct berval) ); + if( *vals == NULL ) { +#ifdef NEW_LOGGING + LDAP_LOG( OPERATION, ERR, + "value_add_one: SLAP_MALLOC failed.\n", 0, 0, 0 ); +#else + Debug(LDAP_DEBUG_TRACE, + "value_add_one: SLAP_MALLOC failed.\n", 0, 0, 0 ); +#endif + return LBER_ERROR_MEMORY; + } n = 0; } else { for ( n = 0; (*vals)[n].bv_val != NULL; n++ ) { ; /* Empty */ } - *vals = (BerVarray) ch_realloc( (char *) *vals, + *vals = (BerVarray) SLAP_REALLOC( (char *) *vals, (n + 2) * sizeof(struct berval) ); + if( *vals == NULL ) { +#ifdef NEW_LOGGING + LDAP_LOG( OPERATION, ERR, + "value_add_one: SLAP_MALLOC failed.\n", 0, 0, 0 ); +#else + Debug(LDAP_DEBUG_TRACE, + "value_add_one: SLAP_MALLOC failed.\n", 0, 0, 0 ); +#endif + return LBER_ERROR_MEMORY; + } } v2 = *vals + n; @@ -284,6 +324,8 @@ value_match( struct berval nv1 = { 0, NULL }; struct berval nv2 = { 0, NULL }; + assert( mr != NULL ); + if( !mr->smr_match ) { return LDAP_INAPPROPRIATE_MATCHING; } @@ -349,7 +391,8 @@ int value_find_ex( flags |= SLAP_MR_VALUE_SYNTAX_CONVERTED_MATCH; } - if( mr->smr_syntax->ssyn_normalize ) { + if( !(flags & SLAP_MR_VALUE_NORMALIZED_MATCH) && + mr->smr_syntax->ssyn_normalize ) { struct berval nval_tmp = { 0, NULL }; rc = mr->smr_syntax->ssyn_normalize(