summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiroslav Lichvar <mlichvar@redhat.com>2014-04-26 18:25:45 +0200
committerAmadeusz Sławiński <amade@asmblr.net>2014-04-26 18:25:45 +0200
commitd6d34f0b3b440423848063781d7a11b837d54761 (patch)
tree49e496e9cedeab2db6af9e1dfa051fd3109fd305
parent4e1946df99b31229f2c36406dcfab3d3b3d31e8d (diff)
downloadscreen-d6d34f0b3b440423848063781d7a11b837d54761.tar.gz
Set PAM_TTY item.
Signed-off-by: Amadeusz Sławiński <amade@asmblr.net>
-rw-r--r--src/attacher.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/attacher.c b/src/attacher.c
index 7159c7f..85b90e0 100644
--- a/src/attacher.c
+++ b/src/attacher.c
@@ -847,6 +847,7 @@ screen_builtin_lck()
#ifdef USE_PAM
pam_handle_t *pamh = 0;
int pam_error;
+ char *tty_name;
#endif
char *pass = 0, mypass[16 + 1], salt[3];
int using_pam = 1;
@@ -932,6 +933,15 @@ screen_builtin_lck()
pam_error = pam_start("screen", ppp->pw_name, &PAM_conversation, &pamh);
if (pam_error != PAM_SUCCESS)
AttacherFinit(SIGARG); /* goodbye */
+
+ if (strncmp(attach_tty, "/dev/", 5) == 0)
+ tty_name = attach_tty + 5;
+ else
+ tty_name = attach_tty;
+ pam_error = pam_set_item(pamh, PAM_TTY, tty_name);
+ if (pam_error != PAM_SUCCESS)
+ AttacherFinit(SIGARG); /* goodbye */
+
pam_error = pam_authenticate(pamh, 0);
pam_end(pamh, pam_error);
PAM_conversation.appdata_ptr = 0;