agent: Fix UPDATESTARTUPTTY for ssh.
authorWerner Koch <wk@gnupg.org>
Mon, 19 Aug 2013 09:44:59 +0000 (11:44 +0200)
committerWerner Koch <wk@gnupg.org>
Fri, 7 Mar 2014 08:59:32 +0000 (09:59 +0100)
* 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 <wk@gnupg.org>
(cherry picked from commit 9f5578c29adba6d4f7d3650121d07322c2f8d254)

agent/command-ssh.c

index 4bd1aa7..4191d6f 100644 (file)
@@ -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)