File gnupg-1.9.18-tmpdir.diff of Package gpg2

# create gpg-agent socket in TMPDIR
Index: agent/gpg-agent.c
===================================================================
--- agent/gpg-agent.c.orig
+++ agent/gpg-agent.c
@@ -874,6 +874,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
@@ -885,16 +889,25 @@ 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 (use_standard_socket,
                                         "S.gpg-agent",
-                                        "/tmp/gpg-XXXXXX/S.gpg-agent");
-      if (opt.ssh_support)
+                                        tmp);
+      if (opt.ssh_support) {
+        snprintf(tmp, len, "%s%s%s.ssh", tmp1, tmp1 && strlen(tmp1) > 0 ? "/" : "", tmp2);
 	socket_name_ssh = create_socket_name (use_standard_socket, 
                                             "S.gpg-agent.ssh",
-                                            "/tmp/gpg-XXXXXX/S.gpg-agent.ssh");
-
+                                            tmp);
+      }
+      free(tmp);
       fd = create_server_socket (use_standard_socket, socket_name, 0,
                                  &socket_nonce);
       if (opt.ssh_support)
openSUSE Build Service is sponsored by