pam_set_item() man page:
PAM_TTY
The terminal name: prefixed by /dev/ if it is a device file;
for graphical, X-based, applications the value for this item
should be the $DISPLAY variable.
It seems for example pam_timestamp module is not robust enough to
differentiate between /dev/ and pty/0 and it assumes that '/' in the
path always means '/dev/' prefix ...
Fixes: https://github.com/karelzak/util-linux/issues/1242
Signed-off-by: Karel Zak <kzak@redhat.com>
if (is_pam_failure(rc))
loginpam_err(pamh, rc);
- rc = pam_set_item(pamh, PAM_TTY, cxt->tty_name);
- if (is_pam_failure(rc))
- loginpam_err(pamh, rc);
+ if (cxt->tty_path) {
+ rc = pam_set_item(pamh, PAM_TTY, cxt->tty_path);
+ if (is_pam_failure(rc))
+ loginpam_err(pamh, rc);
+ }
/*
* Andrew.Taylor@cal.montage.ca: Provide a user prompt to PAM so that