Open tstsrt opened 4 years ago
Any ideas on how this might be solved without systemd, like when launching physlock manually, then closing laptop lid?
The bug seems to happen only if both a) the password prompt is running, and b) the system resumes from suspend/hibernate. One possible fix is to have two separate modes of operation - one to lock and another to unlock an already running physlock instance. This way, we can lock the system before suspend and then prompt only after resuming. I'm not sure how difficult this would be to implement, though.
Couldn't it just be made to ignore the EOF character?
I believe that would involve either changing the upstream misc_conv
function (the password prompt) or writing a custom PAM conversation function that ignores EOF.
After resuming from suspend/hibernate, the first authentication attempt fails unless backspace is pressed atleast once. Later attempts work normally. This is because stdin isn't flushed before the password is read, and systemd automatically uses
/dev/null
as stdin, which puts an EOF in the password field. A workaround is to setStandardInput=tty
in the service file. I'm using the following systemd unit to start physlock before suspend. OS is Arch, physlock version isphyslock 13
, and systemd version is245.5-2-arch
.