Code

Merge branch 'maint'
authorJunio C Hamano <gitster@pobox.com>
Sat, 18 Apr 2009 21:45:59 +0000 (14:45 -0700)
committerJunio C Hamano <gitster@pobox.com>
Sat, 18 Apr 2009 21:45:59 +0000 (14:45 -0700)
* maint:
  Describe fixes since 1.6.2.3
  doc/git-daemon: add missing arguments to max-connections option
  doc/git-daemon: add missing arguments to options
  init: Do not segfault on big GIT_TEMPLATE_DIR environment variable
  imap-send: use correct configuration variable in documentation

Documentation/RelNotes-1.6.2.4.txt [new file with mode: 0644]
Documentation/git-daemon.txt
Documentation/git-imap-send.txt
builtin-init-db.c
t/t0001-init.sh

diff --git a/Documentation/RelNotes-1.6.2.4.txt b/Documentation/RelNotes-1.6.2.4.txt
new file mode 100644 (file)
index 0000000..21bf4f3
--- /dev/null
@@ -0,0 +1,31 @@
+GIT v1.6.2.4 Release Notes
+==========================
+
+Fixes since v1.6.2.3
+--------------------
+
+* The configuration parser had a buffer overflow while parsing an overlong
+  value.
+
+* "git-checkout <tree-ish> <submodule>" did not update the index entry at
+  the named path; it now does.
+
+* "git init" segfaulted when given an overlong template location via
+  the --template= option.
+
+* "git-ls-tree" and "git-diff-tree" used a pathspec correctly when
+  deciding to descend into a subdirectory but they did not match the
+  individual paths correctly.  This caused pathspecs "abc/d ab" to match
+  "abc/0" ("abc/d" made them decide to descend into the directory "abc/",
+  and then "ab" incorrectly matched "abc/0" when it shouldn't).
+
+* "git-merge-recursive" was broken when a submodule entry was involved in
+  a criss-cross merge situation.
+
+Many small documentation updates are included as well.
+
+---
+exec >/var/tmp/1
+echo O=$(git describe maint)
+O=v1.6.2.3-21-ga51609a
+git shortlog --no-merges $O..maint
index 36f00aed6798d543b2ee8f7315e447726fa100e5..a85121c689e394e86f7c97025b92ffa03fca0df9 100644 (file)
@@ -48,7 +48,7 @@ OPTIONS
        'git-daemon' will refuse to start when this option is enabled and no
        whitelist is specified.
 
---base-path::
+--base-path=path::
        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 example.com, then if you later try to pull
@@ -81,8 +81,8 @@ OPTIONS
        Incompatible with --port, --listen, --user and --group options.
 
 --listen=host_or_ipaddr::
-       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,17 +90,17 @@ OPTIONS
 --port=n::
        Listen on an alternative port.  Incompatible with '--inetd' option.
 
---init-timeout::
+--init-timeout=n::
        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::
+--timeout=n::
        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.
 
---max-connections::
+--max-connections=n::
        Maximum number of concurrent clients, defaults to 32.  Set it to
        zero for no limit.
 
@@ -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
        item.
 
 --allow-override=service::
index 024084b8b717d680c274737a14f609d299b6daa8..d016dafd491de5a4635e30b92607dadbaf7bf46f 100644 (file)
@@ -51,7 +51,7 @@ imap.host::
 imap.user::
        The username to use when logging in to the server.
 
-imap.password::
+imap.pass::
        The password to use when logging in to the server.
 
 imap.port::
index 4e02b33bb77b8957940562f87bc0b6faaeb3a101..d1fa12a59efb34256b2cc80b03c637cc844d84ff 100644 (file)
@@ -122,8 +122,10 @@ static void copy_templates(const char *template_dir)
                template_dir = system_path(DEFAULT_GIT_TEMPLATE_DIR);
        if (!template_dir[0])
                return;
+       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;
index 5ac0a273a94c033fbb7c48cb9a22e44c389e0f7d..e3d846420dc09e7b24876b291b9e546ac0628ed3 100755 (executable)
@@ -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
+       )
+'
+
 test_done