summaryrefslogtreecommitdiffstats
path: root/src/providers/ipa/ipa_auth.c
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2013-02-26 16:25:07 -0500
committerJakub Hrozek <jhrozek@redhat.com>2013-03-19 14:07:41 +0100
commit233a3c6c48972b177e60d6ef4cecfacd3cf31659 (patch)
treee67d6eaed705d8c76173af0c06b49072224460be /src/providers/ipa/ipa_auth.c
parent4f2e932acd5266e9d4e3f55966baafbdbd2ae210 (diff)
downloadsssd-233a3c6c48972b177e60d6ef4cecfacd3cf31659.tar.gz
sssd-233a3c6c48972b177e60d6ef4cecfacd3cf31659.tar.xz
sssd-233a3c6c48972b177e60d6ef4cecfacd3cf31659.zip
Use common error facility instead of sdap_result
Simplifies and consolidates error reporting for ldap authentication paths. Adds 3 new error codes: ERR_CHPASS_DENIED - Used when password constraints deny password changes ERR_ACCOUNT_EXPIRED - Account is expired ERR_PASSWORD_EXPIRED - Password is expired
Diffstat (limited to 'src/providers/ipa/ipa_auth.c')
-rw-r--r--src/providers/ipa/ipa_auth.c24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/providers/ipa/ipa_auth.c b/src/providers/ipa/ipa_auth.c
index 2a033db94..5cb3d402e 100644
--- a/src/providers/ipa/ipa_auth.c
+++ b/src/providers/ipa/ipa_auth.c
@@ -36,7 +36,6 @@ struct get_password_migration_flag_state {
struct tevent_context *ev;
struct sdap_id_op *sdap_op;
struct sdap_id_ctx *sdap_id_ctx;
- enum sdap_result result;
struct fo_server *srv;
char *ipa_realm;
bool password_migration;
@@ -68,7 +67,6 @@ static struct tevent_req *get_password_migration_flag_send(TALLOC_CTX *memctx,
state->ev = ev;
state->sdap_id_ctx = sdap_id_ctx;
- state->result = SDAP_ERROR;
state->srv = NULL;
state->password_migration = false;
state->ipa_realm = ipa_realm;
@@ -393,26 +391,30 @@ static void ipa_auth_ldap_done(struct tevent_req *req)
struct be_ctx *be_ctx = be_req_get_be_ctx(state->be_req);
int ret;
int dp_err = DP_ERR_FATAL;
- enum sdap_result result;
- ret = sdap_auth_recv(req, state, &result, NULL);
+ ret = sdap_auth_recv(req, state, NULL);
talloc_zfree(req);
- if (ret != EOK) {
- DEBUG(SSSDBG_OP_FAILURE, ("auth_send request failed.\n"));
- state->pd->pam_status = PAM_SYSTEM_ERR;
- dp_err = DP_ERR_OK;
- goto done;
- }
+ switch (ret) {
+ case EOK:
+ break;
+ case ERR_AUTH_DENIED:
+ case ERR_AUTH_FAILED:
+ case ERR_PASSWORD_EXPIRED:
/* TODO: do we need to handle expired passwords? */
- if (result != SDAP_AUTH_SUCCESS) {
DEBUG(SSSDBG_MINOR_FAILURE, ("LDAP authentication failed, "
"Password migration not possible.\n"));
state->pd->pam_status = PAM_CRED_INSUFFICIENT;
dp_err = DP_ERR_OK;
goto done;
+ default:
+ DEBUG(SSSDBG_OP_FAILURE, ("auth_send request failed.\n"));
+ state->pd->pam_status = PAM_SYSTEM_ERR;
+ dp_err = DP_ERR_OK;
+ goto done;
}
+
DEBUG(SSSDBG_TRACE_FUNC, ("LDAP authentication succeded, "
"trying Kerberos authentication again.\n"));