From dab651a240ad59722c3c23fcea6e2f91909b2a1b Mon Sep 17 00:00:00 2001 From: Christoph Gysin Date: Sun, 24 Jan 2016 14:35:28 +0200 Subject: [PATCH] swaylock: fix pam conversation --- swaylock/main.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/swaylock/main.c b/swaylock/main.c index ca3453ff..e6095d35 100644 --- a/swaylock/main.c +++ b/swaylock/main.c @@ -48,16 +48,26 @@ int function_conversation(int num_msg, const struct pam_message **msg, "PAM_TEXT_INFO", }; + /* PAM expects an array of responses, one for each message */ + struct pam_response *pam_reply = calloc(num_msg, sizeof(struct pam_response)); + *resp = pam_reply; + for(int i=0; imsg_style], msg[i]->msg); - } - struct pam_response *pam_reply = malloc(sizeof(struct pam_response)); - pam_reply[0].resp = password; - pam_reply[0].resp_retcode = 0; - *resp = pam_reply; + switch (msg[i]->msg_style) { + case PAM_PROMPT_ECHO_OFF: + case PAM_PROMPT_ECHO_ON: + pam_reply[i].resp = password; + break; + + case PAM_ERROR_MSG: + case PAM_TEXT_INFO: + break; + } + } return PAM_SUCCESS; }