X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Ftty-ask-password-agent.c;h=35e4d63a8a4b7980e2ec247b4384ccf00251cb3c;hb=83310f162d2a78913b2748aaa5ffb1ae8226484f;hp=14b01486bd4636a942347df45c7df77880f5838e;hpb=21bc923aa35d455cdef1607eb7022608c705c9f3;p=elogind.git diff --git a/src/tty-ask-password-agent.c b/src/tty-ask-password-agent.c index 14b01486b..35e4d63a8 100644 --- a/src/tty-ask-password-agent.c +++ b/src/tty-ask-password-agent.c @@ -92,7 +92,7 @@ static int ask_password_plymouth( sa.sa.sa_family = AF_UNIX; strncpy(sa.un.sun_path+1, "/org/freedesktop/plymouthd", sizeof(sa.un.sun_path)-1); if (connect(fd, &sa.sa, offsetof(struct sockaddr_un, sun_path) + 1 + strlen(sa.un.sun_path+1)) < 0) { - log_error("FAILED TO CONNECT: %m"); + log_error("Failed to connect to Plymouth: %m"); r = -errno; goto finish; } @@ -128,7 +128,7 @@ static int ask_password_plymouth( y = now(CLOCK_MONOTONIC); if (y > until) { - r = -ETIMEDOUT; + r = -ETIME; goto finish; } @@ -149,7 +149,7 @@ static int ask_password_plymouth( r = -errno; goto finish; } else if (j == 0) { - r = -ETIMEDOUT; + r = -ETIME; goto finish; } @@ -315,7 +315,7 @@ static int parse_password(const char *filename, char **wall) { struct sockaddr sa; struct sockaddr_un un; } sa; - size_t packet_length; + size_t packet_length = 0; assert(arg_action == ACTION_QUERY || arg_action == ACTION_WATCH); @@ -330,7 +330,7 @@ static int parse_password(const char *filename, char **wall) { } if (arg_plymouth) { - char **passwords; + char **passwords = NULL; if ((r = ask_password_plymouth(message, not_after, filename, accept_cached, &passwords)) >= 0) { char **p; @@ -375,7 +375,14 @@ static int parse_password(const char *filename, char **wall) { packet_length = strlen(packet); } + if (r == -ETIME || r == -ENOENT) { + /* If the query went away, that's OK */ + r = 0; + goto finish; + } + if (r < 0) { + log_error("Failed to query password: %s", strerror(-r)); goto finish; } @@ -500,6 +507,9 @@ static int show_passwords(void) { int q; char *wall; + /* We only support /dev on tmpfs, hence we can rely on + * d_type to be reliable */ + if (de->d_type != DT_REG) continue; @@ -618,8 +628,8 @@ static int help(void) { " -h --help Show this help\n" " --list Show pending password requests\n" " --query Process pending password requests\n" - " --watch Continously process password requests\n" - " --wall Continously forward password requests to wall\n" + " --watch Continuously process password requests\n" + " --wall Continuously forward password requests to wall\n" " --plymouth Ask question with Plymouth instead of on TTY\n" " --console Ask question on /dev/console instead of current TTY\n", program_invocation_short_name);