diff options
author | Simo Sorce <simo@redhat.com> | 2013-01-08 01:25:47 -0500 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2013-01-15 10:53:03 +0100 |
commit | b0fa48b0d612b46a86e45f8e4b5d9feae9784c2b (patch) | |
tree | 8df34df06567f926284a27b775fb923b39bc4a6d /src/db | |
parent | 965428847850f1b154130e249f2d942c6065e88d (diff) | |
download | sssd-b0fa48b0d612b46a86e45f8e4b5d9feae9784c2b.tar.gz sssd-b0fa48b0d612b46a86e45f8e4b5d9feae9784c2b.tar.bz2 sssd-b0fa48b0d612b46a86e45f8e4b5d9feae9784c2b.zip |
Add domain arguments to sysdb sudo functions
Diffstat (limited to 'src/db')
-rw-r--r-- | src/db/sysdb_sudo.c | 45 | ||||
-rw-r--r-- | src/db/sysdb_sudo.h | 23 |
2 files changed, 42 insertions, 26 deletions
diff --git a/src/db/sysdb_sudo.c b/src/db/sysdb_sudo.c index 56ac8428..93dea85c 100644 --- a/src/db/sysdb_sudo.c +++ b/src/db/sysdb_sudo.c @@ -307,8 +307,9 @@ done: } errno_t -sysdb_get_sudo_user_info(TALLOC_CTX *mem_ctx, const char *username, - struct sysdb_ctx *sysdb, uid_t *_uid, +sysdb_get_sudo_user_info(TALLOC_CTX *mem_ctx, struct sysdb_ctx *sysdb, + struct sss_domain_info *domain, + const char *username, uid_t *_uid, char ***groupnames) { TALLOC_CTX *tmp_ctx; @@ -332,7 +333,7 @@ sysdb_get_sudo_user_info(TALLOC_CTX *mem_ctx, const char *username, tmp_ctx = talloc_new(NULL); NULL_CHECK(tmp_ctx, ret, done); - ret = sysdb_search_user_by_name(tmp_ctx, sysdb, sysdb->domain, + ret = sysdb_search_user_by_name(tmp_ctx, sysdb, domain, username, attrs, &msg); if (ret != EOK) { DEBUG(SSSDBG_CRIT_FAILURE, ("Error looking up user %s\n", username)); @@ -378,7 +379,7 @@ sysdb_get_sudo_user_info(TALLOC_CTX *mem_ctx, const char *username, /* resolve primary group */ gid = ldb_msg_find_attr_as_uint64(msg, SYSDB_GIDNUM, 0); if (gid != 0) { - ret = sysdb_search_group_by_gid(tmp_ctx, sysdb, sysdb->domain, gid, + ret = sysdb_search_group_by_gid(tmp_ctx, sysdb, domain, gid, group_attrs, &group_msg); if (ret == EOK) { primary_group = ldb_msg_find_attr_as_string(group_msg, SYSDB_NAME, @@ -420,9 +421,10 @@ done: } errno_t -sysdb_save_sudorule(struct sysdb_ctx *sysdb_ctx, - const char *rule_name, - struct sysdb_attrs *attrs) +sysdb_save_sudorule(struct sysdb_ctx *sysdb, + struct sss_domain_info *domain, + const char *rule_name, + struct sysdb_attrs *attrs) { errno_t ret; @@ -443,7 +445,7 @@ sysdb_save_sudorule(struct sysdb_ctx *sysdb_ctx, return ret; } - ret = sysdb_store_custom(sysdb_ctx, sysdb_ctx->domain, rule_name, SUDORULE_SUBDIR, attrs); + ret = sysdb_store_custom(sysdb, domain, rule_name, SUDORULE_SUBDIR, attrs); if (ret != EOK) { DEBUG(SSSDBG_OP_FAILURE, ("sysdb_store_custom failed [%d]: %s\n", ret, strerror(ret))); @@ -454,6 +456,7 @@ sysdb_save_sudorule(struct sysdb_ctx *sysdb_ctx, } static errno_t sysdb_sudo_set_refresh_time(struct sysdb_ctx *sysdb, + struct sss_domain_info *domain, const char *attr_name, time_t value) { @@ -471,7 +474,7 @@ static errno_t sysdb_sudo_set_refresh_time(struct sysdb_ctx *sysdb, } dn = ldb_dn_new_fmt(tmp_ctx, sysdb->ldb, SYSDB_TMPL_CUSTOM_SUBTREE, - SUDORULE_SUBDIR, sysdb->domain->name); + SUDORULE_SUBDIR, domain->name); if (!dn) { ret = ENOMEM; goto done; @@ -530,6 +533,7 @@ done: } static errno_t sysdb_sudo_get_refresh_time(struct sysdb_ctx *sysdb, + struct sss_domain_info *domain, const char *attr_name, time_t *value) { @@ -546,7 +550,7 @@ static errno_t sysdb_sudo_get_refresh_time(struct sysdb_ctx *sysdb, } dn = ldb_dn_new_fmt(tmp_ctx, sysdb->ldb, SYSDB_TMPL_CUSTOM_SUBTREE, - SUDORULE_SUBDIR, sysdb->domain->name); + SUDORULE_SUBDIR, domain->name); if (!dn) { ret = ENOMEM; goto done; @@ -584,16 +588,20 @@ done: return ret; } -errno_t sysdb_sudo_set_last_full_refresh(struct sysdb_ctx *sysdb, time_t value) +errno_t sysdb_sudo_set_last_full_refresh(struct sysdb_ctx *sysdb, + struct sss_domain_info *domain, + time_t value) { - return sysdb_sudo_set_refresh_time(sysdb, SYSDB_SUDO_AT_LAST_FULL_REFRESH, - value); + return sysdb_sudo_set_refresh_time(sysdb, domain, + SYSDB_SUDO_AT_LAST_FULL_REFRESH, value); } -errno_t sysdb_sudo_get_last_full_refresh(struct sysdb_ctx *sysdb, time_t *value) +errno_t sysdb_sudo_get_last_full_refresh(struct sysdb_ctx *sysdb, + struct sss_domain_info *domain, + time_t *value) { - return sysdb_sudo_get_refresh_time(sysdb, SYSDB_SUDO_AT_LAST_FULL_REFRESH, - value); + return sysdb_sudo_get_refresh_time(sysdb, domain, + SYSDB_SUDO_AT_LAST_FULL_REFRESH, value); } /* ==================== Purge functions ==================== */ @@ -624,10 +632,11 @@ done: } errno_t sysdb_sudo_purge_byname(struct sysdb_ctx *sysdb, + struct sss_domain_info *domain, const char *name) { DEBUG(SSSDBG_TRACE_INTERNAL, ("Deleting sudo rule %s\n", name)); - return sysdb_delete_custom(sysdb, sysdb->domain, name, SUDORULE_SUBDIR); + return sysdb_delete_custom(sysdb, domain, name, SUDORULE_SUBDIR); } errno_t sysdb_sudo_purge_byfilter(struct sysdb_ctx *sysdb, @@ -683,7 +692,7 @@ errno_t sysdb_sudo_purge_byfilter(struct sysdb_ctx *sysdb, continue; } - ret = sysdb_sudo_purge_byname(sysdb, name); + ret = sysdb_sudo_purge_byname(sysdb, domain, name); if (ret != EOK) { DEBUG(SSSDBG_OP_FAILURE, ("Could not delete rule %s\n", name)); goto done; diff --git a/src/db/sysdb_sudo.h b/src/db/sysdb_sudo.h index 60911b6e..da019240 100644 --- a/src/db/sysdb_sudo.h +++ b/src/db/sysdb_sudo.h @@ -72,19 +72,26 @@ sysdb_get_sudo_filter(TALLOC_CTX *mem_ctx, const char *username, char **_filter); errno_t -sysdb_get_sudo_user_info(TALLOC_CTX *mem_ctx, const char *username, - struct sysdb_ctx *sysdb, uid_t *_uid, +sysdb_get_sudo_user_info(TALLOC_CTX *mem_ctx, struct sysdb_ctx *sysdb, + struct sss_domain_info *domain, + const char *username, uid_t *_uid, char ***groupnames); errno_t -sysdb_save_sudorule(struct sysdb_ctx *sysdb_ctx, - const char *rule_name, - struct sysdb_attrs *attrs); - -errno_t sysdb_sudo_set_last_full_refresh(struct sysdb_ctx *sysdb, time_t value); -errno_t sysdb_sudo_get_last_full_refresh(struct sysdb_ctx *sysdb, time_t *value); +sysdb_save_sudorule(struct sysdb_ctx *sysdb, + struct sss_domain_info *domain, + const char *rule_name, + struct sysdb_attrs *attrs); + +errno_t sysdb_sudo_set_last_full_refresh(struct sysdb_ctx *sysdb, + struct sss_domain_info *domain, + time_t value); +errno_t sysdb_sudo_get_last_full_refresh(struct sysdb_ctx *sysdb, + struct sss_domain_info *domain, + time_t *value); errno_t sysdb_sudo_purge_byname(struct sysdb_ctx *sysdb, + struct sss_domain_info *domain, const char *name); errno_t sysdb_sudo_purge_byfilter(struct sysdb_ctx *sysdb, |