summaryrefslogtreecommitdiffstats
path: root/src/providers
diff options
context:
space:
mode:
authorSimo Sorce <ssorce@redhat.com>2010-03-01 23:41:26 -0500
committerStephen Gallagher <sgallagh@redhat.com>2010-04-12 09:22:13 -0400
commitbb0b6b4e39242577f60729fbcbd9e46e7a7af30d (patch)
tree487a6658ff978c56022e7ea5e924d93335e70013 /src/providers
parent02a9d8a40dc3a5fd671ede0e4fa7dac5178fbc75 (diff)
downloadsssd-bb0b6b4e39242577f60729fbcbd9e46e7a7af30d.tar.gz
sssd-bb0b6b4e39242577f60729fbcbd9e46e7a7af30d.tar.xz
sssd-bb0b6b4e39242577f60729fbcbd9e46e7a7af30d.zip
sysdb: convert sysdb_cache_password
Diffstat (limited to 'src/providers')
-rw-r--r--src/providers/krb5/krb5_auth.c37
-rw-r--r--src/providers/ldap/ldap_auth.c43
-rw-r--r--src/providers/proxy.c37
3 files changed, 28 insertions, 89 deletions
diff --git a/src/providers/krb5/krb5_auth.c b/src/providers/krb5/krb5_auth.c
index 6b1f54d62..57ce673cb 100644
--- a/src/providers/krb5/krb5_auth.c
+++ b/src/providers/krb5/krb5_auth.c
@@ -662,7 +662,6 @@ static void krb5_resolve_kpasswd_done(struct tevent_req *req);
static void krb5_find_ccache_step(struct krb5child_req *kr);
static void krb5_save_ccname_done(struct tevent_req *req);
static void krb5_child_done(struct tevent_req *req);
-static void krb5_pam_handler_cache_done(struct tevent_req *treq);
void krb5_pam_handler(struct be_req *be_req)
{
@@ -1189,7 +1188,8 @@ static void krb5_save_ccname_done(struct tevent_req *req)
if (be_req->be_ctx->domain->cache_credentials == TRUE) {
/* password caching failures are not fatal errors */
- pd->pam_status = PAM_SUCCESS;
+ pam_status = PAM_SUCCESS;
+ dp_err = DP_ERR_OK;
switch(pd->cmd) {
case SSS_PAM_AUTHENTICATE:
@@ -1218,16 +1218,13 @@ static void krb5_save_ccname_done(struct tevent_req *req)
talloc_set_destructor((TALLOC_CTX *)password, password_destructor);
- req = sysdb_cache_password_send(be_req, be_req->be_ctx->ev,
- be_req->be_ctx->sysdb, NULL,
- be_req->be_ctx->domain, pd->user,
- password);
- if (req == NULL) {
- DEBUG(2, ("cache_password_send failed, offline auth may not work.\n"));
- goto failed;
+ ret = sysdb_cache_password(be_req, be_req->be_ctx->sysdb,
+ be_req->be_ctx->domain, pd->user,
+ password);
+ if (ret) {
+ DEBUG(2, ("Failed to cache password, offline auth may not work."
+ " (%d)[%s]!?\n", ret, strerror(ret)));
}
- tevent_req_set_callback(req, krb5_pam_handler_cache_done, be_req);
- return;
}
pam_status = PAM_SUCCESS;
@@ -1240,24 +1237,6 @@ failed:
krb_reply(be_req, dp_err, pd->pam_status);
}
-static void krb5_pam_handler_cache_done(struct tevent_req *subreq)
-{
- struct be_req *be_req = tevent_req_callback_data(subreq, struct be_req);
- int ret;
-
- /* password caching failures are not fatal errors */
- ret = sysdb_cache_password_recv(subreq);
- talloc_zfree(subreq);
-
- /* so we just log it any return */
- if (ret) {
- DEBUG(2, ("Failed to cache password (%d)[%s]!?\n",
- ret, strerror(ret)));
- }
-
- krb_reply(be_req, DP_ERR_OK, PAM_SUCCESS);
-}
-
static void krb_reply(struct be_req *req, int dp_err, int result)
{
req->fn(req, dp_err, result, NULL);
diff --git a/src/providers/ldap/ldap_auth.c b/src/providers/ldap/ldap_auth.c
index c78f50313..7eabd6cfa 100644
--- a/src/providers/ldap/ldap_auth.c
+++ b/src/providers/ldap/ldap_auth.c
@@ -899,7 +899,6 @@ struct sdap_pam_auth_state {
};
static void sdap_pam_auth_done(struct tevent_req *req);
-static void sdap_password_cache_done(struct tevent_req *req);
void sdap_pam_auth_handler(struct be_req *breq)
{
@@ -965,7 +964,6 @@ static void sdap_pam_auth_done(struct tevent_req *req)
{
struct sdap_pam_auth_state *state =
tevent_req_callback_data(req, struct sdap_pam_auth_state);
- struct tevent_req *subreq;
enum sdap_result result;
enum pwexpire pw_expire_type;
void *pw_expire_data;
@@ -1059,45 +1057,26 @@ static void sdap_pam_auth_done(struct tevent_req *req)
}
talloc_set_destructor((TALLOC_CTX *)password, password_destructor);
- subreq = sysdb_cache_password_send(state,
- state->breq->be_ctx->ev,
- state->breq->be_ctx->sysdb,
- NULL,
- state->breq->be_ctx->domain,
- state->username, password);
+ ret = sysdb_cache_password(state,
+ state->breq->be_ctx->sysdb,
+ state->breq->be_ctx->domain,
+ state->username, password);
/* password caching failures are not fatal errors */
- if (!subreq) {
- DEBUG(2, ("Failed to cache password for %s\n", state->username));
- goto done;
+ if (!ret) {
+ DEBUG(2, ("Failed to cache password for %s\n",
+ state->username));
+ } else {
+ DEBUG(4, ("Password successfully cached for %s\n",
+ state->username));
}
-
- tevent_req_set_callback(subreq, sdap_password_cache_done, state);
- return;
+ goto done;
}
done:
sdap_pam_auth_reply(state->breq, dp_err, state->pd->pam_status);
}
-static void sdap_password_cache_done(struct tevent_req *subreq)
-{
- struct sdap_pam_auth_state *state = tevent_req_callback_data(subreq,
- struct sdap_pam_auth_state);
- int ret;
-
- ret = sysdb_cache_password_recv(subreq);
- talloc_zfree(subreq);
- if (ret) {
- /* password caching failures are not fatal errors */
- DEBUG(2, ("Failed to cache password for %s\n", state->username));
- } else {
- DEBUG(4, ("Password successfully cached for %s\n", state->username));
- }
-
- sdap_pam_auth_reply(state->breq, DP_ERR_OK, state->pd->pam_status);
-}
-
static void sdap_pam_auth_reply(struct be_req *req, int dp_err, int result)
{
req->fn(req, dp_err, result, NULL);
diff --git a/src/providers/proxy.c b/src/providers/proxy.c
index b499a1517..4426f1301 100644
--- a/src/providers/proxy.c
+++ b/src/providers/proxy.c
@@ -115,7 +115,6 @@ failed:
return PAM_CONV_ERR;
}
-static void proxy_pam_handler_cache_done(struct tevent_req *treq);
static void proxy_reply(struct be_req *req, int dp_err,
int error, const char *errstr);
@@ -249,7 +248,6 @@ static void proxy_pam_handler(struct be_req *req) {
pd->pam_status = pam_status;
if (cache_auth_data) {
- struct tevent_req *subreq;
char *password;
password = talloc_size(req, auth_data->authtok_size + 1);
@@ -261,38 +259,21 @@ static void proxy_pam_handler(struct be_req *req) {
password[auth_data->authtok_size] = '\0';
talloc_set_destructor((TALLOC_CTX *)password, password_destructor);
- subreq = sysdb_cache_password_send(req, req->be_ctx->ev,
- req->be_ctx->sysdb, NULL,
- req->be_ctx->domain,
- pd->user, password);
- if (!subreq) {
- /* password caching failures are not fatal errors */
- return proxy_reply(req, DP_ERR_OK, EOK, NULL);
+ ret = sysdb_cache_password(req, req->be_ctx->sysdb,
+ req->be_ctx->domain,
+ pd->user, password);
+
+ /* password caching failures are not fatal errors */
+ /* so we just log it any return */
+ if (ret) {
+ DEBUG(2, ("Failed to cache password (%d)[%s]!?\n",
+ ret, strerror(ret)));
}
- tevent_req_set_callback(subreq, proxy_pam_handler_cache_done, req);
}
proxy_reply(req, DP_ERR_OK, EOK, NULL);
}
-static void proxy_pam_handler_cache_done(struct tevent_req *subreq)
-{
- struct be_req *req = tevent_req_callback_data(subreq, struct be_req);
- int ret;
-
- /* password caching failures are not fatal errors */
- ret = sysdb_cache_password_recv(subreq);
- talloc_zfree(subreq);
-
- /* so we just log it any return */
- if (ret) {
- DEBUG(2, ("Failed to cache password (%d)[%s]!?\n",
- ret, strerror(ret)));
- }
-
- return proxy_reply(req, DP_ERR_OK, EOK, NULL);
-}
-
static void proxy_reply(struct be_req *req, int dp_err,
int error, const char *errstr)
{