aboutsummaryrefslogtreecommitdiffstats
path: root/agent/command.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2017-02-03 16:13:08 +0000
committerWerner Koch <[email protected]>2017-02-03 16:13:08 +0000
commit309f464a5952c7d7504b875bf4853914b1242346 (patch)
tree7c81ec6fbd9c8f02bfcbef9dbcdd3f9323654b92 /agent/command.c
parentgpg: More diagnostics for a launched pinentry. (diff)
downloadgnupg-309f464a5952c7d7504b875bf4853914b1242346.tar.gz
gnupg-309f464a5952c7d7504b875bf4853914b1242346.zip
agent: Tell the Pinentry the client's pid.
* configure.ac: Check for SO_PEERCRED et al. * agent/agent.h (server_control_s): Add field 'client_pid'. * agent/command.c (start_command_handler): Set CLIENT_PID. * agent/command-ssh.c (get_client_pid): New. (start_command_handler_ssh): Set CLIENT_PID. * agent/call-pinentry.c (start_pinentry): Tell Pinentry the client-pid. Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'agent/command.c')
-rw-r--r--agent/command.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/agent/command.c b/agent/command.c
index a2d493167..c8b34e988 100644
--- a/agent/command.c
+++ b/agent/command.c
@@ -3288,6 +3288,8 @@ start_command_handler (ctrl_t ctrl, gnupg_fd_t listen_fd, gnupg_fd_t fd)
for (;;)
{
+ pid_t client_pid;
+
rc = assuan_accept (ctx);
if (gpg_err_code (rc) == GPG_ERR_EOF || rc == -1)
{
@@ -3299,7 +3301,12 @@ start_command_handler (ctrl_t ctrl, gnupg_fd_t listen_fd, gnupg_fd_t fd)
break;
}
- ctrl->server_local->connect_from_self = (assuan_get_pid (ctx)==getpid ());
+ client_pid = assuan_get_pid (ctx);
+ ctrl->server_local->connect_from_self = (client_pid == getpid ());
+ if (client_pid != ASSUAN_INVALID_PID)
+ ctrl->client_pid = (unsigned long)client_pid;
+ else
+ ctrl->client_pid = 0;
rc = assuan_process (ctx);
if (rc)