From bd93b8d9becb01d21871b63e34c2e824c60b1e8c Mon Sep 17 00:00:00 2001 From: Jon Griffiths Date: Tue, 23 Feb 2016 02:15:41 -0500 Subject: credential-cache--daemon: disallow relative socket path Relative socket paths are dangerous since the user cannot generally control when the daemon starts (initially, after a timeout, kill or crash). Since the daemon creates but does not delete the socket directory, this could lead to spurious directory creation relative to the users cwd. Suggested-by: Jeff King Signed-off-by: Jon Griffiths Signed-off-by: Jeff King Signed-off-by: Junio C Hamano diff --git a/Documentation/git-credential-cache.txt b/Documentation/git-credential-cache.txt index 89b7306..96208f8 100644 --- a/Documentation/git-credential-cache.txt +++ b/Documentation/git-credential-cache.txt @@ -36,7 +36,7 @@ OPTIONS cache daemon if one is not started). Defaults to `~/.git-credential-cache/socket`. If your home directory is on a network-mounted filesystem, you may need to change this to a - local filesystem. + local filesystem. You must specify an absolute path. CONTROLLING THE DAEMON ---------------------- diff --git a/credential-cache--daemon.c b/credential-cache--daemon.c index 118d04f..fe37794 100644 --- a/credential-cache--daemon.c +++ b/credential-cache--daemon.c @@ -262,6 +262,9 @@ int main(int argc, const char **argv) if (!socket_path) usage_with_options(usage, options); + if (!is_absolute_path(socket_path)) + die("socket directory must be an absolute path"); + init_socket_directory(socket_path); register_tempfile(&socket_file, socket_path); -- cgit v0.10.2-6-g49f6