X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Fask-password-api.c;h=a3a2e51bb9cafcb98781a90db18ef0f1f5650289;hb=5484fc17a125fd9ced214aefc000d337f77ace35;hp=41049d79bd9d626c0c4bbaaa10a2080cd86d44a5;hpb=56f64d95763a799ba4475daf44d8e9f72a1bd474;p=elogind.git diff --git a/src/shared/ask-password-api.c b/src/shared/ask-password-api.c index 41049d79b..a3a2e51bb 100644 --- a/src/shared/ask-password-api.c +++ b/src/shared/ask-password-api.c @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include #include #include @@ -32,8 +32,11 @@ #include #include "util.h" +#include "formats-util.h" #include "mkdir.h" #include "strv.h" +#include "random-util.h" +#include "terminal-util.h" #include "ask-password-api.h" @@ -258,10 +261,8 @@ static int create_socket(char **name) { assert(name); fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0); - if (fd < 0) { - log_error_errno(errno, "socket() failed: %m"); - return -errno; - } + if (fd < 0) + return log_error_errno(errno, "socket() failed: %m"); snprintf(sa.un.sun_path, sizeof(sa.un.sun_path)-1, "/run/systemd/ask-password/sck.%" PRIx64, random_u64()); @@ -477,6 +478,8 @@ int ask_password_agent( goto finish; } + cmsg_close_all(&msghdr); + if (n <= 0) { log_error("Message too short"); continue;