diff options
author | Junio C Hamano <gitster@pobox.com> | 2015-03-03 14:37:05 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2015-03-03 14:37:06 -0800 |
commit | 4c3dbbf7225c45ab0e04953090d0ece4a15e83a2 (patch) | |
tree | 68820f614f5c4f3b735c2eb6dd13c1e12208a6ae /connect.c | |
parent | ef4cdb8bb7c56a431f2f553ed39b896f32488a18 (diff) | |
parent | b48537305229d1a4f25633f71941ee52d2582017 (diff) | |
download | git-4c3dbbf7225c45ab0e04953090d0ece4a15e83a2.tar.gz |
Merge branch 'jk/daemon-interpolate'
The "interpolated-path" option of "git daemon" inserted any string
client declared on the "host=" capability request without checking.
Sanitize and limit %H and %CH to a saner and a valid DNS name.
* jk/daemon-interpolate:
daemon: sanitize incoming virtual hostname
t5570: test git-daemon's --interpolated-path option
git_connect: let user override virtual-host we send to daemon
Diffstat (limited to 'connect.c')
-rw-r--r-- | connect.c | 12 |
1 files changed, 11 insertions, 1 deletions
@@ -670,10 +670,20 @@ struct child_process *git_connect(int fd[2], const char *url, printf("Diag: path=%s\n", path ? path : "NULL"); conn = NULL; } else if (protocol == PROTO_GIT) { + /* + * Set up virtual host information based on where we will + * connect, unless the user has overridden us in + * the environment. + */ + char *target_host = getenv("GIT_OVERRIDE_VIRTUAL_HOST"); + if (target_host) + target_host = xstrdup(target_host); + else + target_host = xstrdup(hostandport); + /* These underlying connection commands die() if they * cannot connect. */ - char *target_host = xstrdup(hostandport); if (git_use_proxy(hostandport)) conn = git_proxy_connect(fd, hostandport); else |