23 lines
663 B
Diff
23 lines
663 B
Diff
--- ssh-agent.c
|
|
+++ ssh-agent.c
|
|
@@ -1126,8 +1126,18 @@
|
|
parent_pid = getpid();
|
|
|
|
if (agentsocket == NULL) {
|
|
+ char *tmp1, *tmp;
|
|
+ char *tmp2 = "ssh-XXXXXXXXXX";
|
|
+ size_t len;
|
|
+
|
|
+ if ((tmp1 = getenv("TMPDIR")) == NULL)
|
|
+ tmp1 = "/tmp";
|
|
+ len = strlen(tmp1) + strlen(tmp2) + 1;
|
|
+ tmp = malloc(len);
|
|
+ snprintf(tmp, len, "%s%s%s", tmp1, tmp1 && strlen(tmp1) > 0 ? "/" : "", tmp2);
|
|
/* Create private directory for agent socket */
|
|
- strlcpy(socket_dir, "/tmp/ssh-XXXXXXXXXX", sizeof socket_dir);
|
|
+ strlcpy(socket_dir, tmp, sizeof socket_dir);
|
|
+ free(tmp);
|
|
if (mkdtemp(socket_dir) == NULL) {
|
|
perror("mkdtemp: private socket dir");
|
|
exit(1);
|