From 9c5b22cedaf3074dad9e74bf2f7ba737b3dd3fc8 Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Sat, 12 Jul 2008 16:26:27 +0000 Subject: [PATCH] remove data when freed (blind fix to ITS#5607) --- servers/slapd/back-sql/sql-wrap.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/servers/slapd/back-sql/sql-wrap.c b/servers/slapd/back-sql/sql-wrap.c index 39fbda86e5..c7b3c60bb0 100644 --- a/servers/slapd/back-sql/sql-wrap.c +++ b/servers/slapd/back-sql/sql-wrap.c @@ -462,28 +462,31 @@ backsql_open_db_handle( return LDAP_SUCCESS; } +static void *backsql_db_conn_dummy; + +static void +backsql_db_conn_keyfree( + void *key, + void *data ) +{ + (void)backsql_close_db_handle( (SQLHDBC)data ); +} + int backsql_free_db_conn( Operation *op, SQLHDBC dbh ) { Debug( LDAP_DEBUG_TRACE, "==>backsql_free_db_conn()\n", 0, 0, 0 ); (void)backsql_close_db_handle( dbh ); + ldap_pvt_thread_pool_setkey( op->o_threadctx, + &backsql_db_conn_dummy, (void *)SQL_NULL_HDBC, + backsql_db_conn_keyfree, NULL, NULL ); Debug( LDAP_DEBUG_TRACE, "<==backsql_free_db_conn()\n", 0, 0, 0 ); return LDAP_SUCCESS; } -static void *backsql_db_conn_dummy; - -static void -backsql_db_conn_keyfree( - void *key, - void *data ) -{ - backsql_close_db_handle( (SQLHDBC)data ); -} - int backsql_get_db_conn( Operation *op, SQLHDBC *dbhp ) { @@ -514,9 +517,8 @@ backsql_get_db_conn( Operation *op, SQLHDBC *dbhp ) } if ( op->o_threadctx ) { - void *data = NULL; + void *data = (void *)dbh; - data = (void *)dbh; ldap_pvt_thread_pool_setkey( op->o_threadctx, &backsql_db_conn_dummy, data, backsql_db_conn_keyfree, NULL, NULL ); -- 2.39.5