diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2011-03-17 17:54:06 +0100 |
---|---|---|
committer | Stephen Gallagher <sgallagh@redhat.com> | 2011-03-23 04:58:37 -0400 |
commit | 278e1768a158a73b7769bcfe17035a17e2b81f70 (patch) | |
tree | 4c69ae6c8f330fc1e71e777afd429b8aa979421a /src | |
parent | 7196eba0014cfd954ab86bf86ae5e151ed9d7600 (diff) | |
download | sssd-278e1768a158a73b7769bcfe17035a17e2b81f70.tar.gz sssd-278e1768a158a73b7769bcfe17035a17e2b81f70.tar.xz sssd-278e1768a158a73b7769bcfe17035a17e2b81f70.zip |
Add originalDN to fake groups
Diffstat (limited to 'src')
-rw-r--r-- | src/db/sysdb.h | 3 | ||||
-rw-r--r-- | src/db/sysdb_ops.c | 8 | ||||
-rw-r--r-- | src/providers/ldap/sdap_async_accounts.c | 11 | ||||
-rw-r--r-- | src/tests/sysdb-tests.c | 4 |
4 files changed, 21 insertions, 5 deletions
diff --git a/src/db/sysdb.h b/src/db/sysdb.h index e98426551..971a35f99 100644 --- a/src/db/sysdb.h +++ b/src/db/sysdb.h @@ -496,7 +496,8 @@ int sysdb_add_group(TALLOC_CTX *mem_ctx, int sysdb_add_incomplete_group(struct sysdb_ctx *ctx, struct sss_domain_info *domain, const char *name, - gid_t gid); + gid_t gid, + const char *original_dn); /* Add netgroup (only basic attrs and w/o checks) */ int sysdb_add_basic_netgroup(struct sysdb_ctx *ctx, diff --git a/src/db/sysdb_ops.c b/src/db/sysdb_ops.c index e60af7175..ba1f6672c 100644 --- a/src/db/sysdb_ops.c +++ b/src/db/sysdb_ops.c @@ -1147,7 +1147,8 @@ done: int sysdb_add_incomplete_group(struct sysdb_ctx *ctx, struct sss_domain_info *domain, const char *name, - gid_t gid) + gid_t gid, + const char *original_dn) { TALLOC_CTX *tmpctx; time_t now; @@ -1178,6 +1179,11 @@ int sysdb_add_incomplete_group(struct sysdb_ctx *ctx, now-1); if (ret) goto done; + if (original_dn) { + ret = sysdb_attrs_add_string(attrs, SYSDB_ORIG_DN, original_dn); + if (ret) goto done; + } + ret = sysdb_set_group_attr(tmpctx, ctx, domain, name, attrs, SYSDB_MOD_REP); diff --git a/src/providers/ldap/sdap_async_accounts.c b/src/providers/ldap/sdap_async_accounts.c index 0784965ac..357e78736 100644 --- a/src/providers/ldap/sdap_async_accounts.c +++ b/src/providers/ldap/sdap_async_accounts.c @@ -1868,6 +1868,7 @@ static errno_t sdap_add_incomplete_groups(struct sysdb_ctx *sysdb, struct ldb_message *msg; int i, mi, ai; const char *name; + const char *original_dn; char **missing; gid_t gid; int ret; @@ -1939,9 +1940,17 @@ static errno_t sdap_add_incomplete_groups(struct sysdb_ctx *sysdb, goto fail; } + ret = sysdb_attrs_get_string(ldap_groups[ai], + SYSDB_ORIG_DN, + &original_dn); + if (ret) { + DEBUG(5, ("The group has no name original DN\n")); + original_dn = NULL; + } DEBUG(8, ("Adding fake group %s to sysdb\n", name)); - ret = sysdb_add_incomplete_group(sysdb, dom, name, gid); + ret = sysdb_add_incomplete_group(sysdb, dom, name, + gid, original_dn); if (ret != EOK) { goto fail; } diff --git a/src/tests/sysdb-tests.c b/src/tests/sysdb-tests.c index eada9a3af..b856c093b 100644 --- a/src/tests/sysdb-tests.c +++ b/src/tests/sysdb-tests.c @@ -268,7 +268,7 @@ static int test_add_incomplete_group(struct test_data *data) int ret; ret = sysdb_add_incomplete_group(data->ctx->sysdb, data->ctx->domain, - data->groupname, data->gid); + data->groupname, data->gid, NULL); return ret; } @@ -2743,7 +2743,7 @@ START_TEST(test_odd_characters) /* Add */ ret = sysdb_add_incomplete_group(test_ctx->sysdb, test_ctx->domain, - odd_groupname, 20000); + odd_groupname, 20000, NULL); fail_unless(ret == EOK, "sysdb_add_incomplete_group error [%d][%s]", ret, strerror(ret)); |