diff options
author | Jeff Hostetler <jeffhost@microsoft.com> | 2021-03-15 21:08:26 +0000 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-03-15 14:32:51 -0700 |
commit | 77e522caaeebe8c6378dcf7045b19cbd22c8b2fb (patch) | |
tree | a935ff8bd5ce0802dfda6fbd530e99f07446f491 /builtin/credential-cache.c | |
parent | unix-socket: add backlog size option to unix_stream_listen() (diff) | |
download | tgif-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.c | 2 |
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; |