X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftty-ask-password-agent.c;h=d7e1ebaef69b79cad16083190972ff982f6b743c;hb=796ba5549416b8a2c037da1d40fa76cb1a53f5df;hp=a414cba3748c27c16cba6ad82a5fbc2f5a4f7bbb;hpb=d55f4f3f92f56f76bdd06192d6a2ef3ee9fe4772;p=elogind.git diff --git a/src/tty-ask-password-agent.c b/src/tty-ask-password-agent.c index a414cba37..d7e1ebaef 100644 --- a/src/tty-ask-password-agent.c +++ b/src/tty-ask-password-agent.c @@ -261,7 +261,6 @@ static int parse_password(const char *filename, char **wall) { FILE *f; int r; - usec_t n; assert(filename); @@ -279,14 +278,22 @@ static int parse_password(const char *filename, char **wall) { goto finish; } - if (!socket_name || not_after <= 0) { + if (!socket_name) { log_error("Invalid password file %s", filename); r = -EBADMSG; goto finish; } - n = now(CLOCK_MONOTONIC); - if (n > not_after) { + if (not_after > 0) { + if (now(CLOCK_MONOTONIC) > not_after) { + r = 0; + goto finish; + } + } + + if (pid > 0 && + kill(pid, 0) < 0 && + errno == ESRCH) { r = 0; goto finish; }