[389-commits] Branch 'Directory_Server_8_2_Branch' - ldap/servers

Noriko Hosoi nhosoi at fedoraproject.org
Wed May 19 22:17:19 UTC 2010


 ldap/servers/plugins/acl/acl.c         |    2 +-
 ldap/servers/slapd/back-ldbm/dblayer.c |    9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

New commits:
commit 970c1ff80d21bb2d04ec68b96ad21608919923ea
Author: Noriko Hosoi <nhosoi at redhat.com>
Date:   Wed May 19 15:02:41 2010 -0700

    593110 - backup-restore does not ALWAYS work
    
    https://bugzilla.redhat.com/show_bug.cgi?id=593110
    
    Fix description:
    ldap/servers/slapd/back-ldbm/dblayer.c -- A memory area that
    stores nsslapd-directory was shared between 2 structures:
    struct ldbminfo and dblayer_private.  In dblayer_post_close,
    dblayer_private is released but not struct ldbminfo.  The
    latter does not know the memory area is freed.  This fix
    changes it so that each structure has its own copy.
    
    ldap/servers/plugins/acl/acl.c -- A variable result_status
    had a chance to be evaluated w/o an initialization.

diff --git a/ldap/servers/plugins/acl/acl.c b/ldap/servers/plugins/acl/acl.c
index 8b0e7fa..9cb9229 100644
--- a/ldap/servers/plugins/acl/acl.c
+++ b/ldap/servers/plugins/acl/acl.c
@@ -3910,7 +3910,7 @@ acl__recompute_acl (  	Acl_PBlock 		*aclpb,
 	char		*unused_str1, *unused_str2;
 	char		*acl_tag, *testRight[2];
 	int			j, expr_num;
-	int			result_status, cache_result;
+	int			result_status = ACL_RES_INVALID, cache_result;
 	PRUint32	cookie;
 	aci_t		*aci;
 
diff --git a/ldap/servers/slapd/back-ldbm/dblayer.c b/ldap/servers/slapd/back-ldbm/dblayer.c
index 08df608..1254b37 100644
--- a/ldap/servers/slapd/back-ldbm/dblayer.c
+++ b/ldap/servers/slapd/back-ldbm/dblayer.c
@@ -1447,7 +1447,10 @@ int dblayer_start(struct ldbminfo *li, int dbmode)
         return -1;
     }
     PR_Lock(li->li_config_mutex);
-    priv->dblayer_home_directory = li->li_directory; /* nsslapd-directory */
+    /* li->li_directory comes from nsslapd-directory */
+    /* dblayer_home_directory is freed in dblayer_post_close.
+     * li_directory needs to live beyond dblayer. */
+    priv->dblayer_home_directory = slapi_ch_strdup(li->li_directory); 
     priv->dblayer_cachesize = li->li_dbcachesize;
     priv->dblayer_file_mode = li->li_mode;
     priv->dblayer_ncache = li->li_dbncache;
@@ -5509,7 +5512,9 @@ int dblayer_restore(struct ldbminfo *li, char *src_dir, Slapi_Task *task, char *
 
     /* DBDB this is a hack, take out later */
     PR_Lock(li->li_config_mutex);
-    priv->dblayer_home_directory = li->li_directory;
+    /* dblayer_home_directory is freed in dblayer_post_close.
+     * li_directory needs to live beyond dblayer. */
+    priv->dblayer_home_directory = slapi_ch_strdup(li->li_directory);
     priv->dblayer_cachesize = li->li_dbcachesize;
     priv->dblayer_ncache = li->li_dbncache;
     priv->dblayer_file_mode = li->li_mode;




More information about the 389-commits mailing list