]> git.sur5r.net Git - openldap/commitdiff
fix previous commit (ITS#4861)
authorPierangelo Masarati <ando@openldap.org>
Fri, 9 Mar 2007 17:24:56 +0000 (17:24 +0000)
committerPierangelo Masarati <ando@openldap.org>
Fri, 9 Mar 2007 17:24:56 +0000 (17:24 +0000)
servers/slapd/back-ldap/bind.c
servers/slapd/back-ldap/search.c
servers/slapd/back-meta/bind.c

index ac1a9c64b8129b63c58798bab4e79bf2ebd5d2be..9ea112bf936c4e934e7f28495675cfdfa9844024 100644 (file)
@@ -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 );
index ef183ab97abcebe931ee418d6f5f18412336f65d..467c5642f99252e174f31d0052be8678e8741b05 100644 (file)
@@ -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 );
        }
index df8934f53fd1bb69d08a239e24d780cf82cc73cd..143411236237972a1b09e446d6a2f8fb853e8aef 100644 (file)
@@ -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 );