summaryrefslogtreecommitdiff
path: root/connect.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2015-03-03 14:37:05 -0800
committerJunio C Hamano <gitster@pobox.com>2015-03-03 14:37:06 -0800
commit4c3dbbf7225c45ab0e04953090d0ece4a15e83a2 (patch)
tree68820f614f5c4f3b735c2eb6dd13c1e12208a6ae /connect.c
parentef4cdb8bb7c56a431f2f553ed39b896f32488a18 (diff)
parentb48537305229d1a4f25633f71941ee52d2582017 (diff)
downloadgit-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.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/connect.c b/connect.c
index 062e133aa3..372ac5ad9d 100644
--- a/connect.c
+++ b/connect.c
@@ -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