summaryrefslogtreecommitdiff
path: root/builtin/credential-cache.c
diff options
context:
space:
mode:
authorLibravatar Jeff Hostetler <jeffhost@microsoft.com>2021-03-15 21:08:26 +0000
committerLibravatar Junio C Hamano <gitster@pobox.com>2021-03-15 14:32:51 -0700
commit77e522caaeebe8c6378dcf7045b19cbd22c8b2fb (patch)
treea935ff8bd5ce0802dfda6fbd530e99f07446f491 /builtin/credential-cache.c
parentunix-socket: add backlog size option to unix_stream_listen() (diff)
downloadtgif-77e522caaeebe8c6378dcf7045b19cbd22c8b2fb.tar.xz
unix-socket: disallow chdir() when creating unix domain sockets
Calls to `chdir()` are dangerous in a multi-threaded context. If `unix_stream_listen()` or `unix_stream_connect()` is given a socket pathname that is too long to fit in a `sockaddr_un` structure, it will `chdir()` to the parent directory of the requested socket pathname, create the socket using a relative pathname, and then `chdir()` back. This is not thread-safe. Teach `unix_sockaddr_init()` to not allow calls to `chdir()` when this flag is set. Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'builtin/credential-cache.c')
-rw-r--r--builtin/credential-cache.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/builtin/credential-cache.c b/builtin/credential-cache.c
index 9b3f709905..76a6ba3722 100644
--- a/builtin/credential-cache.c
+++ b/builtin/credential-cache.c
@@ -14,7 +14,7 @@
static int send_request(const char *socket, const struct strbuf *out)
{
int got_data = 0;
- int fd = unix_stream_connect(socket);
+ int fd = unix_stream_connect(socket, 0);
if (fd < 0)
return -1;