agent: Add envvar "gnupg_SSH_AUTH_SOCK_by"
[gnupg.git] / agent / gpg-agent.c
index 32da578..4690114 100644 (file)
@@ -1067,7 +1067,7 @@ main (int argc, char **argv )
         }
       else if (pid)
         { /* We are the parent */
-          char *infostr, *infostr_ssh_sock;
+          char *infostr, *infostr_ssh_sock, *infostr_ssh_valid;
 
           /* Close the socket FD. */
           close (fd);
@@ -1104,6 +1104,13 @@ main (int argc, char **argv )
                  kill (pid, SIGTERM);
                  exit (1);
                }
+             if (asprintf (&infostr_ssh_valid, "gnupg_SSH_AUTH_SOCK_by=%lu",
+                           (unsigned long)getpid()) < 0)
+               {
+                 log_error ("out of core\n");
+                 kill (pid, SIGTERM);
+                 exit (1);
+               }
            }
 
           *socket_name = 0; /* Don't let cleanup() remove the socket -
@@ -1142,7 +1149,8 @@ main (int argc, char **argv )
                   kill (pid, SIGTERM );
                   exit (1);
                 }
-              if (opt.ssh_support && putenv (infostr_ssh_sock))
+              if (opt.ssh_support && (putenv (infostr_ssh_sock)
+                                      || putenv (infostr_ssh_valid)))
                 {
                   log_error ("failed to set environment: %s\n",
                              strerror (errno) );
@@ -1189,6 +1197,7 @@ main (int argc, char **argv )
              if (opt.ssh_support)
                {
                  xfree (infostr_ssh_sock);
+                 xfree (infostr_ssh_valid);
                }
               exit (0);
             }