summaryrefslogtreecommitdiffstats
path: root/swaylock
diff options
context:
space:
mode:
authorLibravatar Christoph Gysin <christoph.gysin@gmail.com>2016-01-24 14:35:28 +0200
committerLibravatar Christoph Gysin <christoph.gysin@gmail.com>2016-01-25 20:14:59 +0200
commitdab651a240ad59722c3c23fcea6e2f91909b2a1b (patch)
treefe21fd722249bfc0ee9c8dbe4cdfcf93d763f211 /swaylock
parentswaylock: add pam conversation debug output (diff)
downloadsway-dab651a240ad59722c3c23fcea6e2f91909b2a1b.tar.gz
sway-dab651a240ad59722c3c23fcea6e2f91909b2a1b.tar.zst
sway-dab651a240ad59722c3c23fcea6e2f91909b2a1b.zip
swaylock: fix pam conversation
Diffstat (limited to 'swaylock')
-rw-r--r--swaylock/main.c20
1 files 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,
48 "PAM_TEXT_INFO", 48 "PAM_TEXT_INFO",
49 }; 49 };
50 50
51 /* PAM expects an array of responses, one for each message */
52 struct pam_response *pam_reply = calloc(num_msg, sizeof(struct pam_response));
53 *resp = pam_reply;
54
51 for(int i=0; i<num_msg; ++i) { 55 for(int i=0; i<num_msg; ++i) {
52 sway_log(L_DEBUG, "msg[%d]: (%s) %s", i, 56 sway_log(L_DEBUG, "msg[%d]: (%s) %s", i,
53 msg_style_names[msg[i]->msg_style], 57 msg_style_names[msg[i]->msg_style],
54 msg[i]->msg); 58 msg[i]->msg);
55 }
56 59
57 struct pam_response *pam_reply = malloc(sizeof(struct pam_response)); 60 switch (msg[i]->msg_style) {
58 pam_reply[0].resp = password; 61 case PAM_PROMPT_ECHO_OFF:
59 pam_reply[0].resp_retcode = 0; 62 case PAM_PROMPT_ECHO_ON:
60 *resp = pam_reply; 63 pam_reply[i].resp = password;
64 break;
65
66 case PAM_ERROR_MSG:
67 case PAM_TEXT_INFO:
68 break;
69 }
70 }
61 71
62 return PAM_SUCCESS; 72 return PAM_SUCCESS;
63} 73}