From: Pierangelo Masarati Date: Fri, 9 Mar 2007 17:24:56 +0000 (+0000) Subject: fix previous commit (ITS#4861) X-Git-Tag: OPENLDAP_REL_ENG_2_4_MP~621 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=fd1efa13d0be4a7a65c518f37628f90b3295952f;p=openldap fix previous commit (ITS#4861) --- diff --git a/servers/slapd/back-ldap/bind.c b/servers/slapd/back-ldap/bind.c index ac1a9c64b8..9ea112bf93 100644 --- a/servers/slapd/back-ldap/bind.c +++ b/servers/slapd/back-ldap/bind.c @@ -1711,8 +1711,6 @@ retry:; rs->sr_err = LDAP_NO_SUCH_OBJECT; } - ber_memvfree( (void **)refs ); - if ( ctrls != NULL ) { rs->sr_ctrls = ctrls; } @@ -1771,6 +1769,10 @@ retry:; rs->sr_ref = NULL; } + if ( refs ) { + ber_memvfree( (void **)refs ); + } + if ( ctrls ) { assert( rs->sr_ctrls != NULL ); ldap_controls_free( ctrls ); diff --git a/servers/slapd/back-ldap/search.c b/servers/slapd/back-ldap/search.c index ef183ab97a..467c5642f9 100644 --- a/servers/slapd/back-ldap/search.c +++ b/servers/slapd/back-ldap/search.c @@ -158,6 +158,8 @@ ldap_back_search( int freetext = 0; int do_retry = 1, dont_retry = 0; LDAPControl **ctrls = NULL; + char **references = NULL; + /* FIXME: shouldn't this be null? */ const char *save_matched = rs->sr_matched; @@ -356,8 +358,6 @@ retry: } } else if ( rc == LDAP_RES_SEARCH_REFERENCE ) { - char **references = NULL; - do_retry = 0; rc = ldap_parse_reference( lc->lc_ld, res, &references, &rs->sr_ctrls, 1 ); @@ -398,6 +398,7 @@ retry: ber_memvfree( (void **)references ); op->o_tmpfree( rs->sr_ref, op->o_tmpmemctx ); rs->sr_ref = NULL; + references = NULL; } if ( rs->sr_ctrls ) { @@ -406,7 +407,7 @@ retry: } } else { - char **references = NULL, *err = NULL; + char *err = NULL; rc = ldap_parse_result( lc->lc_ld, res, &rs->sr_err, &match.bv_val, &err, @@ -444,7 +445,7 @@ retry: for ( cnt = 0; references[ cnt ]; cnt++ ) { /* duplicating ...*/ - ber_str2bv( references[ cnt ], 0, 1, &rs->sr_ref[ cnt ] ); + ber_str2bv( references[ cnt ], 0, 0, &rs->sr_ref[ cnt ] ); } BER_BVZERO( &rs->sr_ref[ cnt ] ); } @@ -460,8 +461,6 @@ retry: rs->sr_err = LDAP_NO_SUCH_OBJECT; } - ber_memvfree( (void **)references ); - if ( match.bv_val != NULL ) { match.bv_len = strlen( match.bv_val ); } @@ -552,10 +551,14 @@ finish:; } if ( rs->sr_ref ) { - ber_bvarray_free_x( rs->sr_ref, op->o_tmpmemctx ); + op->o_tmpfree( rs->sr_ref, op->o_tmpmemctx ); rs->sr_ref = NULL; } + if ( references ) { + ber_memvfree( (void **)references ); + } + if ( attrs ) { ch_free( attrs ); } diff --git a/servers/slapd/back-meta/bind.c b/servers/slapd/back-meta/bind.c index df8934f53f..1434112362 100644 --- a/servers/slapd/back-meta/bind.c +++ b/servers/slapd/back-meta/bind.c @@ -1056,8 +1056,6 @@ retry:; rs->sr_err = LDAP_NO_SUCH_OBJECT; } - ber_memvfree( (void **)refs ); - if ( ctrls != NULL ) { rs->sr_ctrls = ctrls; } @@ -1201,9 +1199,11 @@ retry:; ldap_memfree( text ); } if ( rs->sr_ref ) { - assert( refs != NULL ); - ber_memvfree( (void **)refs ); op->o_tmpfree( rs->sr_ref, op->o_tmpmemctx ); + rs->sr_ref = NULL; + } + if ( refs ) { + ber_memvfree( (void **)refs ); } if ( ctrls ) { assert( rs->sr_ctrls != NULL );