]> git.sur5r.net Git - openldap/commitdiff
remove data when freed (blind fix to ITS#5607)
authorPierangelo Masarati <ando@openldap.org>
Sat, 12 Jul 2008 16:26:27 +0000 (16:26 +0000)
committerPierangelo Masarati <ando@openldap.org>
Sat, 12 Jul 2008 16:26:27 +0000 (16:26 +0000)
servers/slapd/back-sql/sql-wrap.c

index 39fbda86e58d2e40eb4853bd6b32b63037ea89e8..c7b3c60bb05e68cae533ed56587d4876f949fd76 100644 (file)
@@ -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 );