From 90d2b4e2f04176b4cc79183034f59953aea9711d Mon Sep 17 00:00:00 2001 From: Quanah Gibson-Mount Date: Mon, 3 Jan 2011 19:58:02 +0000 Subject: [PATCH] ITS#6629 --- CHANGES | 1 + servers/slapd/result.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/CHANGES b/CHANGES index bc4e33f08e..681b71e649 100644 --- 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) diff --git a/servers/slapd/result.c b/servers/slapd/result.c index 38152e0194..c984863bc4 100644 --- a/servers/slapd/result.c +++ b/servers/slapd/result.c @@ -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; } -- 2.39.5