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 466052e83b57f58a0d5a2ee3fed8129376169323 Author: Noriko Hosoi nhosoi@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 715ad1e..574c862 100644 --- a/ldap/servers/plugins/acl/acl.c +++ b/ldap/servers/plugins/acl/acl.c @@ -3913,7 +3913,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 35c392d..ae66be6 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; @@ -5535,7 +5538,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;
389-commits@lists.fedoraproject.org