diff options
author | Petr Cech <pcech@redhat.com> | 2016-06-20 09:19:03 -0300 |
---|---|---|
committer | Lukas Slebodnik <lslebodn@redhat.com> | 2016-07-11 11:57:28 +0200 |
commit | 311836214245600566f881ff6253594e0999008e (patch) | |
tree | ecd48db4c76a567b27e2b0309ec6d478c64a9f99 | |
parent | 9328787e8d64a5d654814ce3cd9782686f1d64a8 (diff) | |
download | sssd-311836214245600566f881ff6253594e0999008e.tar.gz sssd-311836214245600566f881ff6253594e0999008e.tar.xz sssd-311836214245600566f881ff6253594e0999008e.zip |
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.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/db/sysdb_upgrade.c b/src/db/sysdb_upgrade.c index 1d2978cae..4ca8433f9 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; |