From 8871e28f18cbcc33fc7a4e8b081fbc7e47a4396e Mon Sep 17 00:00:00 2001
From: Howard Chu <hyc@openldap.org>
Date: Mon, 27 May 2013 11:17:05 -0700
Subject: [PATCH] ITS#7588 plug memleak

---
 servers/slapd/overlays/sssvlv.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/servers/slapd/overlays/sssvlv.c b/servers/slapd/overlays/sssvlv.c
index 49b4cf01b0..c6779dd3a7 100644
--- a/servers/slapd/overlays/sssvlv.c
+++ b/servers/slapd/overlays/sssvlv.c
@@ -397,7 +397,19 @@ static void free_sort_op( Connection *conn, sort_op *so )
 {
 	int sess_id;
 	if ( so->so_tree ) {
-		tavl_free( so->so_tree, ch_free );
+		if ( so->so_paged > SLAP_CONTROL_IGNORED ) {
+			Avlnode *cur_node, *next_node;
+			cur_node = so->so_tree;
+			while ( cur_node ) {
+				next_node = tavl_next( cur_node, TAVL_DIR_RIGHT );
+				ch_free( cur_node->avl_data );
+				ber_memfree( cur_node );
+
+				cur_node = next_node;
+			}
+		} else {
+			tavl_free( so->so_tree, ch_free );
+		}
 		so->so_tree = NULL;
 	}
 
-- 
GitLab