From: Pierangelo Masarati Date: Sat, 12 Jul 2008 16:26:27 +0000 (+0000) Subject: remove data when freed (blind fix to ITS#5607) X-Git-Tag: LOCKER_IDS~42 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=9c5b22cedaf3074dad9e74bf2f7ba737b3dd3fc8;p=openldap remove data when freed (blind fix to ITS#5607) --- 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 );