From 89f94c1e6ce2c5fd3f615da878cd1f33586dc482 Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Tue, 10 Nov 2015 19:16:56 +0100 Subject: [PATCH 08/11] DP-PAM: Split out pam_resp_otp_chpass This function will be used by the mocked pam responder in tests. --- src/providers/data_provider.h | 1 + src/providers/dp_pam_data_util.c | 14 ++++++++++++++ src/providers/krb5/krb5_child.c | 10 +--------- 3 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/providers/data_provider.h b/src/providers/data_provider.h index 6fd8cdb7dbac2419a49b4ad6f76a27fcf0309486..95301f5e7c0d8a496571fcabbb28948ddab00f71 100644 --- a/src/providers/data_provider.h +++ b/src/providers/data_provider.h @@ -221,6 +221,7 @@ int pam_add_response(struct pam_data *pd, void pam_resp_grace_login(struct pam_data *pd, uint32_t grace); void pam_resp_expired_login(struct pam_data *pd, uint32_t expire); void pam_resp_srv_msg(struct pam_data *pd, const char *str_msg); +void pam_resp_otp_chpass(struct pam_data *pd); /* Unlike other pam_resp* function, failure of this one must * be fatal diff --git a/src/providers/dp_pam_data_util.c b/src/providers/dp_pam_data_util.c index 9ad75f6f128e80e4b90c59b65c4f0febb9547481..618b2742189bfd058c889873a662fdf4de3a5e27 100644 --- a/src/providers/dp_pam_data_util.c +++ b/src/providers/dp_pam_data_util.c @@ -332,3 +332,17 @@ errno_t pam_resp_otp_info(struct pam_data *pd, return ret; } + +void pam_resp_otp_chpass(struct pam_data *pd) +{ + errno_t ret; + uint32_t user_info_type; + + user_info_type = SSS_PAM_USER_INFO_OTP_CHPASS; + ret = pam_add_response(pd, SSS_PAM_USER_INFO, sizeof(uint32_t), + (const uint8_t *) &user_info_type); + if (ret != EOK) { + DEBUG(SSSDBG_CRIT_FAILURE, "pam_add_response failed.\n"); + /* Not fatal */ + } +} diff --git a/src/providers/krb5/krb5_child.c b/src/providers/krb5/krb5_child.c index 47872aee0e04e37f9048f3e78fae9c8109544eec..ffa597eb567029c16f3990b1bb4f3c33b247e7df 100644 --- a/src/providers/krb5/krb5_child.c +++ b/src/providers/krb5/krb5_child.c @@ -1319,7 +1319,6 @@ static errno_t changepw_child(struct krb5_req *kr, bool prelim) krb5_prompter_fct prompter = NULL; const char *realm_name; int realm_length; - uint32_t user_info_type; DEBUG(SSSDBG_TRACE_LIBS, "Password change operation\n"); @@ -1428,14 +1427,7 @@ static errno_t changepw_child(struct krb5_req *kr, bool prelim) krb5_free_cred_contents(kr->ctx, kr->creds); if (kr->otp == true) { - user_info_type = SSS_PAM_USER_INFO_OTP_CHPASS; - ret = pam_add_response(kr->pd, SSS_PAM_USER_INFO, sizeof(uint32_t), - (const uint8_t *) &user_info_type); - if (ret != EOK) { - DEBUG(SSSDBG_CRIT_FAILURE, "pam_add_response failed.\n"); - /* Not fatal */ - } - + pam_resp_otp_chpass(kr->pd); sss_authtok_set_empty(kr->pd->newauthtok); return map_krb5_error(kerr); } -- 2.4.11