[389-commits] ldap/servers

Mark Reynolds mreynolds at fedoraproject.org
Fri Jan 17 17:16:38 UTC 2014


 ldap/servers/slapd/back-ldbm/dblayer.c |    8 +++-----
 1 file changed, 3 insertions(+), 5 deletions(-)

New commits:
commit 26aad754b1a559fbea02806cebf2ed7f6ab22848
Author: Mark Reynolds <mreynolds at redhat.com>
Date:   Thu Jan 16 10:36:19 2014 -0500

    Ticket 47654 - fix double free
    
    Bug Description:  Under certain circumstances the dbhome directory gets freed twice.
    
    Fix Description:  Copy the db home directory into the private db directory array, instead
                      of passing a reference to it.
    
    https://fedorahosted.org/389/ticket/47654
    
    Reviewed by: rmeggins(Thanks!)

diff --git a/ldap/servers/slapd/back-ldbm/dblayer.c b/ldap/servers/slapd/back-ldbm/dblayer.c
index 2384471..9fae72b 100644
--- a/ldap/servers/slapd/back-ldbm/dblayer.c
+++ b/ldap/servers/slapd/back-ldbm/dblayer.c
@@ -1357,7 +1357,7 @@ dblayer_make_env(struct dblayer_private_env **env, struct ldbminfo *li)
     if (home_dir && *home_dir &&
         !charray_utf8_inlist(priv->dblayer_data_directories, home_dir))
     {
-        charray_add(&(priv->dblayer_data_directories), home_dir);
+        charray_add(&(priv->dblayer_data_directories), slapi_ch_strdup(home_dir));
     }
 
     /* user specified log dir */
@@ -2928,9 +2928,8 @@ int dblayer_post_close(struct ldbminfo *li, int dbmode)
         charray_free(priv->dblayer_data_directories);
         priv->dblayer_data_directories = NULL;
     }
-    if(dbmode == DBLAYER_NORMAL_MODE){
-        slapi_ch_free_string(&priv->dblayer_home_directory);
-    }
+    slapi_ch_free_string(&priv->dblayer_dbhome_directory);
+    slapi_ch_free_string(&priv->dblayer_home_directory);
 
     return return_value;
 }
@@ -2964,7 +2963,6 @@ int dblayer_close(struct ldbminfo *li, int dbmode)
             return_value |= dblayer_instance_close(be);
         }
     }
-    LDAPDebug1Arg(LDAP_DEBUG_ANY,"MARK dbmode %d\n",dbmode);
 
     if (return_value != 0) {
         /* force recovery next startup if any close failed */




More information about the 389-commits mailing list