]> git.sur5r.net Git - openldap/commitdiff
ITS#6744
authorQuanah Gibson-Mount <quanah@openldap.org>
Tue, 4 Jan 2011 17:40:40 +0000 (17:40 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Tue, 4 Jan 2011 17:40:40 +0000 (17:40 +0000)
CHANGES
libraries/libldap/result.c

diff --git a/CHANGES b/CHANGES
index 2e744f9406b35721c4f36122489973294298ff35..63a0f5f667655757cad0f8ea5431b528c9501a43 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -16,6 +16,7 @@ OpenLDAP 2.4.24 Engineering
        Fixed libldap GnuTLS hang on socket close (ITS#6673)
        Fixed libldap sasl partial write handling (ITS#6639)
        Fixed libldap referral chasing (ITS#6602)
+       Fixed libldap leak when chasing referrals (ITS#6744)
        Fixed libldap url parsing with NULL host (ITS#6653)
        Fixed liblutil getpass prompts (ITS#6702)
        Fixed ldapsearch segfault with deref (ITS#6638)
index 3fdf10d73b5e222e39556f9d6942285e5a816d4a..0f08ca2f66f72a5214698bcfc669ee93af4659b8 100644 (file)
@@ -826,6 +826,7 @@ nextresp2:
                        Debug( LDAP_DEBUG_TRACE,
                                "read1msg:  mark request completed, ld %p msgid %d\n",
                                (void *)ld, lr->lr_msgid, 0);
+                       tmplr = lr;
                        while ( lr->lr_parent != NULL ) {
                                merge_error_info( ld, lr->lr_parent, lr );
 
@@ -834,6 +835,12 @@ nextresp2:
                                        break;  /* not completely done yet */
                                }
                        }
+                       /* ITS#6744: Original lr was refcounted when we retrieved it,
+                        * must release it now that we're working with the parent
+                        */
+                       if ( tmplr->lr_parent ) {
+                               ldap_return_request( ld, tmplr, 0 );
+                       }
 
                        /* Check if all requests are finished, lr is now parent */
                        tmplr = lr;