From 90688b29f3701f4d3e2a5a49c5544fe8d2a84b2d Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Mon, 19 Aug 2013 11:44:59 +0200 Subject: [PATCH] agent: Fix UPDATESTARTUPTTY for ssh. * agent/command-ssh.c (setup_ssh_env): Fix env setting. -- gniibe reported this to gnupg-devel on 2012-07-04: [...] (2) UPDATESTARTUPTTY doesn't work to switch TTY for pinentry for SSH. [...] Current implementation: In the function start_command_handler_ssh, the logic puts priority on ctrl->session_env which is initialized by agent_init_default_ctrl. There are always GPG_TTY and TERM defined, because lines around 968 in gpg-agent.c, it says: /* Make sure that we have a default ttyname. */ While UPDATESTARTUPTTY updates opt.startup_env, it doesn't affect at all. Here is a patch to point the issue. Tested and works for me. Signed-off-by: Werner Koch (cherry picked from commit 9f5578c29adba6d4f7d3650121d07322c2f8d254) --- agent/command-ssh.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/agent/command-ssh.c b/agent/command-ssh.c index 4bd1aa7a7..4191d6f0c 100644 --- a/agent/command-ssh.c +++ b/agent/command-ssh.c @@ -3370,8 +3370,7 @@ setup_ssh_env (ctrl_t ctrl) const char *value; for (idx=0; !err && names[idx]; idx++) - if (!session_env_getenv (ctrl->session_env, names[idx]) - && (value = session_env_getenv (opt.startup_env, names[idx]))) + if ((value = session_env_getenv (opt.startup_env, names[idx]))) err = session_env_setenv (ctrl->session_env, names[idx], value); if (!err && !ctrl->lc_ctype && opt.startup_lc_ctype)