summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Jon Griffiths <jon_p_griffiths@yahoo.com>2016-02-23 02:15:41 -0500
committerLibravatar Junio C Hamano <gitster@pobox.com>2016-02-23 12:56:27 -0800
commitbd93b8d9becb01d21871b63e34c2e824c60b1e8c (patch)
treec4cd9322a3d3a18f0a1ebf1480870d667521e942
parentcredential-cache--daemon: refactor check_socket_directory (diff)
downloadtgif-bd93b8d9becb01d21871b63e34c2e824c60b1e8c.tar.xz
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 <peff@peff.net> Signed-off-by: Jon Griffiths <jon_p_griffiths@yahoo.com> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--Documentation/git-credential-cache.txt2
-rw-r--r--credential-cache--daemon.c3
2 files changed, 4 insertions, 1 deletions
diff --git a/Documentation/git-credential-cache.txt b/Documentation/git-credential-cache.txt
index 89b730632d..96208f822e 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 118d04f137..fe3779472c 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);