Hi,

there is patch for #3023 attached.

Reason for this patch is explained in commit message.

I am open to discussion. In my opinion we don't need to connect sysdb pointer with domain structure because it is not used in other upgrade functions too.

Regards

--
Petr^4 Čech
>From d0cee759147272f33427388af76ea66307e34881 Mon Sep 17 00:00:00 2001
From: Petr Cech <pc...@redhat.com>
Date: Mon, 20 Jun 2016 09:19:03 -0300
Subject: [PATCH] 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
---
 src/db/sysdb_upgrade.c |    9 ++++++---
 1 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/src/db/sysdb_upgrade.c b/src/db/sysdb_upgrade.c
index 113f24644e3e3de1d4c46d375492c2fe1e6b2f83..1c90e7aca2020be1aca50ac4092d5a8c4770775a 100644
--- a/src/db/sysdb_upgrade.c
+++ b/src/db/sysdb_upgrade.c
@@ -443,12 +443,14 @@ int sysdb_check_upgrade_02(struct sss_domain_info *domains,
             goto done;
         }
 
-        users_dn = sysdb_user_base_dn(tmp_ctx, dom);
+        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);
+        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 +1047,8 @@ int sysdb_upgrade_10(struct sysdb_ctx *sysdb, struct sss_domain_info *domain,
         return ret;
     }
 
-    basedn = sysdb_user_base_dn(tmp_ctx, domain);
+    basedn = ldb_dn_new_fmt(tmp_ctx, sysdb->ldb,
+                            SYSDB_TMPL_USER_BASE, domain->name);
     if (basedn == NULL) {
         ret = EIO;
         goto done;
-- 
1.7.1

_______________________________________________
sssd-devel mailing list
sssd-devel@lists.fedorahosted.org
https://lists.fedorahosted.org/admin/lists/sssd-devel@lists.fedorahosted.org

Reply via email to