diff options
authorJunio C Hamano <>2009-04-18 21:43:24 (GMT)
committerJunio C Hamano <>2009-04-18 21:43:24 (GMT)
commita4d1797332bca95635168032c90765a41eacdc7a (patch)
parent0fa0514b9172186d018c884da296ac6705c3e07c (diff)
parent62854410449ec407a363e4bb1dc980a75aa1699d (diff)
Merge branch 'maint-1.6.0' into maint-1.6.1
* maint-1.6.0: doc/git-daemon: add missing arguments to options init: Do not segfault on big GIT_TEMPLATE_DIR environment variable
3 files changed, 20 insertions, 9 deletions
diff --git a/Documentation/git-daemon.txt b/Documentation/git-daemon.txt
index 36f00ae..d559667 100644
--- a/Documentation/git-daemon.txt
+++ b/Documentation/git-daemon.txt
@@ -48,7 +48,7 @@ OPTIONS
'git-daemon' will refuse to start when this option is enabled and no
whitelist is specified.
Remap all the path requests as relative to the given path.
This is sort of "GIT root" - if you run 'git-daemon' with
'--base-path=/srv/git' on, then if you later try to pull
@@ -81,8 +81,8 @@ OPTIONS
Incompatible with --port, --listen, --user and --group options.
- Listen on an a specific IP address or hostname. IP addresses can
- be either an IPv4 address or an IPV6 address if supported. If IPv6
+ Listen on a specific IP address or hostname. IP addresses can
+ be either an IPv4 address or an IPv6 address if supported. If IPv6
is not supported, then --listen=hostname is also not supported and
--listen must be given an IPv4 address.
Incompatible with '--inetd' option.
@@ -90,15 +90,15 @@ OPTIONS
Listen on an alternative port. Incompatible with '--inetd' option.
Timeout between the moment the connection is established and the
client request is received (typically a rather low value, since
that should be basically immediate).
Timeout for specific client sub-requests. This includes the time
- it takes for the server to process the sub-request and time spent
- waiting for next client's request.
+ it takes for the server to process the sub-request and the time spent
+ waiting for the next client's request.
Maximum number of concurrent clients, defaults to 32. Set it to
@@ -150,7 +150,7 @@ the facility of inet daemon to achieve the same before spawning
Enable/disable the service site-wide per default. Note
that a service disabled site-wide can still be enabled
per repository if it is marked overridable and the
- repository enables the service with an configuration
+ repository enables the service with a configuration
diff --git a/builtin-init-db.c b/builtin-init-db.c
index d30c3fe..6cc945d 100644
--- a/builtin-init-db.c
+++ b/builtin-init-db.c
@@ -122,8 +122,10 @@ static void copy_templates(const char *template_dir)
template_dir = system_path(DEFAULT_GIT_TEMPLATE_DIR);
if (!template_dir[0])
+ template_len = strlen(template_dir);
+ if (PATH_MAX <= (template_len+strlen("/config")))
+ die("insanely long template path %s", template_dir);
strcpy(template_path, template_dir);
- template_len = strlen(template_path);
if (template_path[template_len-1] != '/') {
template_path[template_len++] = '/';
template_path[template_len] = 0;
diff --git a/t/ b/t/
index 5ac0a27..e3d8464 100755
--- a/t/
+++ b/t/
@@ -199,4 +199,13 @@ test_expect_success 'init honors global core.sharedRepository' '
x`git config -f shared-honor-global/.git/config core.sharedRepository`
+test_expect_success 'init rejects insanely long --template' '
+ (
+ insane=$(printf "x%09999dx" 1) &&
+ mkdir test &&
+ cd test &&
+ test_must_fail git init --template=$insane
+ )