From 77bc3d93ddd41edee6046508884d7e95553ed5b7 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Mon, 7 Mar 2011 09:59:13 +0100 Subject: [PATCH 1/2] Change sysdb_add_fake_user to add OriginalDN RFC2307bis code relies heavily on originalDN, so the fake users need to have an option to store it, too. --- src/db/sysdb.h | 3 ++- src/db/sysdb_ops.c | 9 ++++++++- src/providers/ldap/sdap_async_accounts.c | 2 +- 3 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/db/sysdb.h b/src/db/sysdb.h index c133072..190e812 100644 --- a/src/db/sysdb.h +++ b/src/db/sysdb.h @@ -495,7 +495,8 @@ int sysdb_add_user(TALLOC_CTX *mem_ctx, int sysdb_add_fake_user(struct sysdb_ctx *ctx, struct sss_domain_info *domain, - const char *name); + const char *name, + const char *original_dn); /* Add group (only basic attrs and w/o checks) */ int sysdb_add_basic_group(TALLOC_CTX *mem_ctx, diff --git a/src/db/sysdb_ops.c b/src/db/sysdb_ops.c index d6260b9..1fb389d 100644 --- a/src/db/sysdb_ops.c +++ b/src/db/sysdb_ops.c @@ -934,7 +934,8 @@ done: int sysdb_add_fake_user(struct sysdb_ctx *ctx, struct sss_domain_info *domain, - const char *name) + const char *name, + const char *original_dn) { TALLOC_CTX *tmpctx; struct ldb_message *msg; @@ -983,6 +984,12 @@ int sysdb_add_fake_user(struct sysdb_ctx *ctx, (unsigned long) now-1); if (ret) goto done; + if (original_dn) { + ret = add_string(msg, LDB_FLAG_MOD_ADD, + SYSDB_ORIG_DN, original_dn); + if (ret) goto done; + } + ret = ldb_add(ctx->ldb, msg); ret = sysdb_error_to_errno(ret); diff --git a/src/providers/ldap/sdap_async_accounts.c b/src/providers/ldap/sdap_async_accounts.c index 9e059bf..3387e3e 100644 --- a/src/providers/ldap/sdap_async_accounts.c +++ b/src/providers/ldap/sdap_async_accounts.c @@ -1406,7 +1406,7 @@ sdap_process_missing_member_2307(struct sdap_process_group_state *state, *in_transaction = true; } - ret = sysdb_add_fake_user(state->sysdb, state->dom, username); + ret = sysdb_add_fake_user(state->sysdb, state->dom, username, NULL); if (ret != EOK) { DEBUG(1, ("Cannot store fake user entry: [%d]: %s\n", ret, strerror(ret))); -- 1.7.6.2