X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fresult.c;h=4cfd8f1e2b7faffb8ff12a81f8666c2779030699;hb=6e9c21cff8fc740dc6ed21c6f64d9a8899a33401;hp=e23f9b43682a033ab8f9ae1fca968acbc7d3ca2a;hpb=3a17376dfd7521743a19d7ed58a98cc81d27ee38;p=openldap diff --git a/servers/slapd/result.c b/servers/slapd/result.c index e23f9b4368..4cfd8f1e2b 100644 --- a/servers/slapd/result.c +++ b/servers/slapd/result.c @@ -38,7 +38,16 @@ static char *v2ref( BerVarray ref, const char *text ) } } - v2 = ch_malloc( len+i+sizeof("Referral:") ); + v2 = SLAP_MALLOC( len+i+sizeof("Referral:") ); + if( v2 == NULL ) { +#ifdef NEW_LOGGING + LDAP_LOG( OPERATION, ERR, "v2ref: SLAP_MALLOC failed", 0, 0, 0 ); +#else + Debug( LDAP_DEBUG_ANY, "v2ref: SLAP_MALLOC failed", 0, 0, 0 ); +#endif + return NULL; + } + if( text != NULL ) { strcpy(v2, text); if( i ) { @@ -49,7 +58,15 @@ static char *v2ref( BerVarray ref, const char *text ) len += sizeof("Referral:"); for( i=0; ref[i].bv_val != NULL; i++ ) { - v2 = ch_realloc( v2, len + ref[i].bv_len + 1 ); + v2 = SLAP_REALLOC( v2, len + ref[i].bv_len + 1 ); + if( v2 == NULL ) { +#ifdef NEW_LOGGING + LDAP_LOG( OPERATION, ERR, "v2ref: SLAP_MALLOC failed", 0, 0, 0 ); +#else + Debug( LDAP_DEBUG_ANY, "v2ref: SLAP_MALLOC failed", 0, 0, 0 ); +#endif + return NULL; + } v2[len-1] = '\n'; AC_MEMCPY(&v2[len], ref[i].bv_val, ref[i].bv_len ); len += ref[i].bv_len; @@ -715,10 +732,10 @@ send_search_entry( if (rc != sizeof(struct sockaddr)) { #ifdef NEW_LOGGING LDAP_LOG( OPERATION, ERR, - "send_search_entry: conn %lu ber_printf failed\n", + "send_search_entry: conn %lu ber_write failed\n", conn ? conn->c_connid : 0, 0, 0 ); #else - Debug( LDAP_DEBUG_ANY, "ber_printf failed\n", 0, 0, 0 ); + Debug( LDAP_DEBUG_ANY, "ber_write failed\n", 0, 0, 0 ); #endif ber_free_buf( ber ); return( 1 ); @@ -772,7 +789,23 @@ send_search_entry( size = i * sizeof(char *) + k; if ( size > 0 ) { char *a_flags; - e_flags = ch_calloc ( 1, i * sizeof(char *) + k ); + e_flags = SLAP_CALLOC ( 1, i * sizeof(char *) + k ); + if( e_flags == NULL ) { +#ifdef NEW_LOGGING + LDAP_LOG( OPERATION, ERR, + "send_search_entry: conn %lu SLAP_CALLOC failed\n", + conn ? conn->c_connid : 0, 0, 0 ); +#else + Debug( LDAP_DEBUG_ANY, + "send_search_entry: SLAP_CALLOC failed\n", 0, 0, 0 ); +#endif + ber_free( ber, 1 ); + + send_ldap_result( conn, op, LDAP_OTHER, + NULL, "memory error", + NULL, NULL ); + goto error_return; + } a_flags = (char *)(e_flags + i); memset( a_flags, 0, k ); for ( a = e->e_attrs, i=0; a != NULL; a = a->a_next, i++ ) { @@ -935,7 +968,7 @@ send_search_entry( * Reuse previous memory - we likely need less space * for operational attributes */ - tmp = ch_realloc ( e_flags, i * sizeof(char *) + k ); + tmp = SLAP_REALLOC ( e_flags, i * sizeof(char *) + k ); if ( tmp == NULL ) { #ifdef NEW_LOGGING LDAP_LOG( OPERATION, ERR, @@ -1267,7 +1300,8 @@ send_search_reference( if( op->o_protocol < LDAP_VERSION3 ) { /* save the references for the result */ if( refs[0].bv_val != NULL ) { - value_add( v2refs, refs ); + if( value_add( v2refs, refs ) ) + return LDAP_OTHER; } return 0; }