# create gpg-agent socket in TMPDIR Index: gnupg-2.0.12/agent/gpg-agent.c =================================================================== --- gnupg-2.0.12.orig/agent/gpg-agent.c 2009-06-03 18:07:56.000000000 +0200 +++ gnupg-2.0.12/agent/gpg-agent.c 2009-06-18 11:40:02.000000000 +0200 @@ -937,6 +937,10 @@ main (int argc, char **argv ) gnupg_fd_t fd_ssh; pid_t pid; + char *tmp1, *tmp; + char *tmp2 = "gpg-XXXXXX/S.gpg-agent"; + size_t len; + /* Remove the DISPLAY variable so that a pinentry does not default to a specific display. There is still a default display when gpg-agent was started using --display or a @@ -948,13 +952,23 @@ main (int argc, char **argv ) unsetenv ("DISPLAY"); #endif + if ((tmp1 = getenv("TMPDIR")) == NULL) + tmp1 = "/tmp"; + + len = strlen(tmp1) + strlen(tmp2) + 10; + tmp = malloc(len); + + snprintf(tmp, len, "%s%s%s", tmp1, tmp1 && strlen(tmp1) > 0 ? "/" : "", tmp2); /* Create the sockets. */ socket_name = create_socket_name - ("S.gpg-agent", "/tmp/gpg-XXXXXX/S.gpg-agent"); - if (opt.ssh_support) - socket_name_ssh = create_socket_name - ("S.gpg-agent.ssh", "/tmp/gpg-XXXXXX/S.gpg-agent.ssh"); + ("S.gpg-agent", tmp); + if (opt.ssh_support) { + snprintf(tmp, len, "%s%s%s.ssh", tmp1, tmp1 && strlen(tmp1) > 0 ? "/" : "", tmp2); + socket_name_ssh = create_socket_name + ("S.gpg-agent.ssh", tmp); + } + free(tmp); fd = create_server_socket (socket_name, 0, &socket_nonce); if (opt.ssh_support)