aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Kahn Gillmor <[email protected]>2016-10-26 03:55:08 +0000
committerNIIBE Yutaka <[email protected]>2016-10-26 05:18:29 +0000
commit27f6d5b9f4b6057ddeb9ace87a1e7e61ebac63e6 (patch)
tree17d9e9f35884b6bb3b7405914c21491b1f570bf1
parentcommon: avoid segfault (diff)
downloadgnupg-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.c7
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)
{