summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Cech <pcech@redhat.com>2016-06-20 09:19:03 -0300
committerLukas Slebodnik <lslebodn@redhat.com>2016-07-11 11:57:28 +0200
commit311836214245600566f881ff6253594e0999008e (patch)
treeecd48db4c76a567b27e2b0309ec6d478c64a9f99
parent9328787e8d64a5d654814ce3cd9782686f1d64a8 (diff)
downloadsssd-311836214245600566f881ff6253594e0999008e.zip
sssd-311836214245600566f881ff6253594e0999008e.tar.gz
sssd-311836214245600566f881ff6253594e0999008e.tar.xz
SYSDB: Fixing DB update
Functions sysdb_user_base_dn() and sysdb_group_base_dn() expect that struct sss_domain_info contains pointer to struct sysdb_ctx. This is not true in case of sysdb_upgrade functions. This patch fixes the situation and revert code to the state before 12a000c8c7c07259e438fb1e992134bdd07d9a30 commit. Resolves: https://fedorahosted.org/sssd/ticket/3023 Reviewed-by: Lukáš Slebodník <lslebodn@redhat.com> Reviewed-by: Sumit Bose <sbose@redhat.com>
-rw-r--r--src/db/sysdb_upgrade.c22
1 files changed, 19 insertions, 3 deletions
diff --git a/src/db/sysdb_upgrade.c b/src/db/sysdb_upgrade.c
index 1d2978c..4ca8433 100644
--- a/src/db/sysdb_upgrade.c
+++ b/src/db/sysdb_upgrade.c
@@ -443,12 +443,23 @@ int sysdb_check_upgrade_02(struct sss_domain_info *domains,
goto done;
}
- users_dn = sysdb_user_base_dn(tmp_ctx, dom);
+ /*
+ * dom->sysdb->ldb is not initialized,
+ * so ldb_dn_new_fmt() shouldn't be changed to sysdb_*_base_dn()
+ */
+ users_dn = ldb_dn_new_fmt(tmp_ctx, sysdb->ldb,
+ SYSDB_TMPL_USER_BASE, dom->name);
if (!users_dn) {
ret = ENOMEM;
goto done;
}
- groups_dn = sysdb_group_base_dn(tmp_ctx, dom);
+
+ /*
+ * dom->sysdb->ldb is not initialized,
+ * so ldb_dn_new_fmt() shouldn't be changed to sysdb_*_base_dn()
+ */
+ groups_dn = ldb_dn_new_fmt(tmp_ctx, sysdb->ldb,
+ SYSDB_TMPL_GROUP_BASE, dom->name);
if (!groups_dn) {
ret = ENOMEM;
goto done;
@@ -1045,7 +1056,12 @@ int sysdb_upgrade_10(struct sysdb_ctx *sysdb, struct sss_domain_info *domain,
return ret;
}
- basedn = sysdb_user_base_dn(tmp_ctx, domain);
+ /*
+ * dom->sysdb->ldb is not initialized,
+ * so ldb_dn_new_fmt() shouldn't be changed to sysdb_*_base_dn()
+ */
+ basedn = ldb_dn_new_fmt(tmp_ctx, sysdb->ldb,
+ SYSDB_TMPL_USER_BASE, domain->name);
if (basedn == NULL) {
ret = EIO;
goto done;