See also bug #322

Simo.

-- 
Simo Sorce * Red Hat, Inc * New York
>From a6fe292ded93127a9d4197eb1f11c743a9f681f4 Mon Sep 17 00:00:00 2001
From: Simo Sorce <sso...@redhat.com>
Date: Thu, 10 Dec 2009 15:48:16 -0500
Subject: [PATCH] Fix for #322, update from old database versions.

---
 server/db/sysdb.c |   15 ++++++++++++++-
 1 files changed, 14 insertions(+), 1 deletions(-)

diff --git a/server/db/sysdb.c b/server/db/sysdb.c
index 7666c78..c07a074 100644
--- a/server/db/sysdb.c
+++ b/server/db/sysdb.c
@@ -1087,6 +1087,8 @@ static int sysdb_upgrade_02(struct confdb_ctx *cdb,
 
         for (j = 0; j < res->count; j++) {
 
+            struct ldb_dn *orig_dn;
+
             msg = res->msgs[j];
 
             /* skip pre-created congtainers */
@@ -1096,6 +1098,17 @@ static int sysdb_upgrade_02(struct confdb_ctx *cdb,
                 continue;
             }
 
+            /* regenerate the DN against the new ldb as it may have different
+             * casefolding rules (example: name changing from case insensitive
+             * to case sensitive) */
+            orig_dn = msg->dn;
+            msg->dn = ldb_dn_new(msg, ctx->ldb,
+                                 ldb_dn_get_linearized(orig_dn));
+            if (!msg->dn) {
+                ret = ENOMEM;
+                goto done;
+            }
+
             ret = ldb_add(ctx->ldb, msg);
             if (ret != LDB_SUCCESS) {
                 DEBUG(0, ("WARNING: Could not add entry %s,"
@@ -1104,7 +1117,7 @@ static int sysdb_upgrade_02(struct confdb_ctx *cdb,
                           ret, ldb_errstring(ctx->ldb)));
             }
 
-            ret = ldb_delete(local->ldb, msg->dn);
+            ret = ldb_delete(local->ldb, orig_dn);
             if (ret != LDB_SUCCESS) {
                 DEBUG(0, ("WARNING: Could not remove entry %s,"
                           " from old ldb file! (%d [%s])\n",
-- 
1.6.2.5

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

Reply via email to