diff options
author | Pavel Reichl <preichl@redhat.com> | 2014-08-01 09:15:59 +0100 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2014-08-17 21:01:33 +0200 |
commit | 4c38ed71727a9668cec4d3bd1bf8f7e77ac5e6c0 (patch) | |
tree | ce5a09185393ba53bce4277e92f3be08f6e8eb66 /src | |
parent | 9ee8bf83ab1cb53e93111adb64c4a66e607d7115 (diff) | |
download | sssd-4c38ed71727a9668cec4d3bd1bf8f7e77ac5e6c0.tar.gz sssd-4c38ed71727a9668cec4d3bd1bf8f7e77ac5e6c0.tar.xz sssd-4c38ed71727a9668cec4d3bd1bf8f7e77ac5e6c0.zip |
SDAP: split sdap_access_filter_get_access_done
As a preparation for ticket #2364 separate code for storing user bool
values into sysdb to a new function sdap_save_user_cache_bool().
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/providers/ldap/sdap_access.c | 59 |
1 files changed, 39 insertions, 20 deletions
diff --git a/src/providers/ldap/sdap_access.c b/src/providers/ldap/sdap_access.c index 89d37e52f..0702c565a 100644 --- a/src/providers/ldap/sdap_access.c +++ b/src/providers/ldap/sdap_access.c @@ -40,6 +40,11 @@ #include "providers/data_provider.h" #include "providers/dp_backend.h" +static errno_t sdap_save_user_cache_bool(struct sss_domain_info *domain, + const char *username, + const char *attr_name, + bool value); + static struct tevent_req *sdap_access_filter_send(TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct be_ctx *be_ctx, @@ -856,7 +861,6 @@ static void sdap_access_filter_get_access_done(struct tevent_req *subreq) int ret, tret, dp_error; size_t num_results; bool found = false; - struct sysdb_attrs *attrs; struct sysdb_attrs **results; struct tevent_req *req = tevent_req_callback_data(subreq, struct tevent_req); @@ -935,25 +939,8 @@ static void sdap_access_filter_get_access_done(struct tevent_req *subreq) ret = ERR_ACCESS_DENIED; } - attrs = sysdb_new_attrs(state); - if (attrs == NULL) { - ret = ENOMEM; - DEBUG(SSSDBG_CRIT_FAILURE, "Could not set up attrs\n"); - goto done; - } - - tret = sysdb_attrs_add_bool(attrs, SYSDB_LDAP_ACCESS_FILTER, - ret == EOK ? true : false); - if (tret != EOK) { - /* Failing to save to the cache is non-fatal. - * Just return the result. - */ - DEBUG(SSSDBG_CRIT_FAILURE, "Could not set up attrs\n"); - goto done; - } - - tret = sysdb_set_user_attr(state->domain, state->username, attrs, - SYSDB_MOD_REP); + tret = sdap_save_user_cache_bool(state->domain, state->username, + SYSDB_LDAP_ACCESS_FILTER, found); if (tret != EOK) { /* Failing to save to the cache is non-fatal. * Just return the result. @@ -1060,6 +1047,38 @@ static errno_t sdap_access_service(struct pam_data *pd, return ret; } +static errno_t sdap_save_user_cache_bool(struct sss_domain_info *domain, + const char *username, + const char *attr_name, + bool value) +{ + errno_t ret; + struct sysdb_attrs *attrs; + + attrs = sysdb_new_attrs(NULL); + if (attrs == NULL) { + ret = ENOMEM; + DEBUG(SSSDBG_CRIT_FAILURE, "Could not set up attrs\n"); + goto done; + } + + ret = sysdb_attrs_add_bool(attrs, attr_name, value); + if (ret != EOK) { + DEBUG(SSSDBG_CRIT_FAILURE, "Could not set up attrs\n"); + goto done; + } + + ret = sysdb_set_user_attr(domain, username, attrs, SYSDB_MOD_REP); + if (ret != EOK) { + DEBUG(SSSDBG_CRIT_FAILURE, "Failed to set user access attribute\n"); + goto done; + } + +done: + talloc_free(attrs); + return ret; +} + static errno_t sdap_access_host(struct ldb_message *user_entry) { errno_t ret; |