From 46b78b8ab809a099480747253eefa5eb128c2a9f Mon Sep 17 00:00:00 2001 From: Jan Zeleny Date: Mon, 11 Apr 2011 09:46:30 -0400 Subject: Some minor fixes and changes in sysdb_ops --- src/db/sysdb_ops.c | 57 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 17 deletions(-) (limited to 'src/db/sysdb_ops.c') diff --git a/src/db/sysdb_ops.c b/src/db/sysdb_ops.c index 7eb4b48c..d6260b97 100644 --- a/src/db/sysdb_ops.c +++ b/src/db/sysdb_ops.c @@ -486,6 +486,10 @@ int sysdb_set_user_attr(TALLOC_CTX *mem_ctx, { struct ldb_dn *dn; + if (!domain) { + domain = ctx->domain; + } + dn = sysdb_user_dn(ctx, mem_ctx, domain->name, name); if (!dn) { return ENOMEM; @@ -531,6 +535,10 @@ int sysdb_set_netgroup_attr(struct sysdb_ctx *ctx, return ENOMEM; } + if (domain == NULL) { + domain = ctx->domain; + } + dn = sysdb_netgroup_dn(ctx, tmp_ctx, domain->name, name); if (!dn) { ret = ENOMEM; @@ -1383,6 +1391,18 @@ int sysdb_store_user(TALLOC_CTX *mem_ctx, return ENOMEM; } + if (!domain) { + domain = ctx->domain; + } + + if (!attrs) { + attrs = sysdb_new_attrs(tmpctx); + if (!attrs) { + ret = ENOMEM; + goto done; + } + } + if (pwd && (domain->legacy_passwords || !*pwd)) { ret = sysdb_attrs_add_string(attrs, SYSDB_PWD, pwd); if (ret) goto done; @@ -1407,14 +1427,6 @@ int sysdb_store_user(TALLOC_CTX *mem_ctx, } /* the user exists, let's just replace attributes when set */ - if (!attrs) { - attrs = sysdb_new_attrs(tmpctx); - if (!attrs) { - ret = ENOMEM; - goto done; - } - } - if (uid) { ret = sysdb_attrs_add_uint32(attrs, SYSDB_UIDNUM, uid); if (ret) goto done; @@ -1516,6 +1528,10 @@ int sysdb_store_group(TALLOC_CTX *mem_ctx, return ENOMEM; } + if (!domain) { + domain = ctx->domain; + } + ret = sysdb_search_group_by_name(tmpctx, ctx, domain, name, src_attrs, &msg); if (ret && ret != ENOENT) { @@ -1525,6 +1541,14 @@ int sysdb_store_group(TALLOC_CTX *mem_ctx, new_group = true; } + if (!attrs) { + attrs = sysdb_new_attrs(tmpctx); + if (!attrs) { + ret = ENOMEM; + goto done; + } + } + /* FIXME: use the remote modification timestamp to know if the * group needs any update */ @@ -1536,15 +1560,6 @@ int sysdb_store_group(TALLOC_CTX *mem_ctx, } /* the group exists, let's just replace attributes when set */ - - if (!attrs) { - attrs = sysdb_new_attrs(tmpctx); - if (!attrs) { - ret = ENOMEM; - goto done; - } - } - if (gid) { ret = sysdb_attrs_add_uint32(attrs, SYSDB_GIDNUM, gid); if (ret) goto done; @@ -2088,6 +2103,10 @@ int sysdb_search_users(TALLOC_CTX *mem_ctx, return ENOMEM; } + if (!domain) { + domain = sysdb->domain; + } + basedn = ldb_dn_new_fmt(tmpctx, sysdb->ldb, SYSDB_TMPL_USER_BASE, domain->name); if (!basedn) { @@ -2202,6 +2221,10 @@ int sysdb_search_groups(TALLOC_CTX *mem_ctx, return ENOMEM; } + if (!domain) { + domain = sysdb->domain; + } + basedn = ldb_dn_new_fmt(tmpctx, sysdb->ldb, SYSDB_TMPL_GROUP_BASE, domain->name); if (!basedn) { -- cgit