diff options
author | Daniel Kahn Gillmor <[email protected]> | 2016-10-26 03:55:08 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2016-10-26 05:18:29 +0000 |
commit | 27f6d5b9f4b6057ddeb9ace87a1e7e61ebac63e6 (patch) | |
tree | 17d9e9f35884b6bb3b7405914c21491b1f570bf1 | |
parent | common: avoid segfault (diff) | |
download | gnupg-27f6d5b9f4b6057ddeb9ace87a1e7e61ebac63e6.tar.gz gnupg-27f6d5b9f4b6057ddeb9ace87a1e7e61ebac63e6.zip |
agent: --supervised mode improvements.
* agent/gpg-agent.c (map_supervised_socket): if the agent is running
in --supervised mode and is not actually given LISTEN_FDNAMES
directives, require at least fd 3 to be open for listening.
--
Signed-off-by: Daniel Kahn Gillmor <[email protected]>
-rw-r--r-- | agent/gpg-agent.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/agent/gpg-agent.c b/agent/gpg-agent.c index 16edae08a..8e2d0129b 100644 --- a/agent/gpg-agent.c +++ b/agent/gpg-agent.c @@ -716,12 +716,19 @@ map_supervised_sockets (gnupg_fd_t *r_fd, /* Assign the descriptors to the return values. */ if (!fdnames) { + struct stat statbuf; if (fd_count != 1) log_error ("no LISTEN_FDNAMES and LISTEN_FDS (%d) != 1" " in --supervised mode." " (ignoring all sockets but the first one)\n", fd_count); + if (fstat (3, &statbuf) == -1 && errno ==EBADF) + log_fatal ("file descriptor 3 must be valid in --supervised mode (as the " + "agent's standard socket) if LISTEN_FDNAMES is not set\n"); *r_fd = 3; + socket_name = get_socket_name (3); + if (!socket_name) + log_error ("cannot learn socket name for fd 3\n"); } else if (fd_count != nfdnames) { |