]> git.sur5r.net Git - openldap/commitdiff
ITS#6629
authorQuanah Gibson-Mount <quanah@openldap.org>
Mon, 3 Jan 2011 19:58:02 +0000 (19:58 +0000)
committerQuanah Gibson-Mount <quanah@openldap.org>
Mon, 3 Jan 2011 19:58:02 +0000 (19:58 +0000)
CHANGES
servers/slapd/result.c

diff --git a/CHANGES b/CHANGES
index bc4e33f08e16351e56f6f01510eafb44f2f0d6f5..681b71e649c470025be20c3bd94197e114c888f1 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -15,6 +15,7 @@ OpenLDAP 2.4.24 Engineering
        Fixed ldapsearch segfault with deref (ITS#6638)
        Fixed slapd acl parsing overflow (ITS#6611)
        Fixed slapd config leak with olcDbDirectory (ITS#6634)
+       Fixed slapd to free controls if needed (ITS#6629)
        Fixed slapd filter leak (ITS#6635)
        Fixed slapd when first acl is value dependent (ITS#6693)
        Fixed slapd modify to return actual error (ITS#6581)
index 38152e019454e7d62de04959bbff7fe3bf29b8be..c984863bc4ae89a21619e99ca60dc923f37a247e 100644 (file)
@@ -1356,6 +1356,14 @@ error_return:;
                rs->sr_flags &= ~REP_ENTRY_MUSTBEFREED;
        }
 
+       if ( rs->sr_flags & REP_CTRLS_MUSTBEFREED ) {
+               rs->sr_flags ^= REP_CTRLS_MUSTBEFREED; /* paranoia */
+               if ( rs->sr_ctrls ) {
+                       slap_free_ctrls( op, rs->sr_ctrls );
+                       rs->sr_ctrls = NULL;
+               }
+       }
+
        return( rc );
 }
 
@@ -1510,6 +1518,14 @@ rel:
                (void)slap_cleanup_play( op, rs );
        }
 
+       if ( rs->sr_flags & REP_CTRLS_MUSTBEFREED ) {
+               rs->sr_flags ^= REP_CTRLS_MUSTBEFREED; /* paranoia */
+               if ( rs->sr_ctrls ) {
+                       slap_free_ctrls( op, rs->sr_ctrls );
+                       rs->sr_ctrls = NULL;
+               }
+       }
+
        return rc;
 }