diff options
author | Junio C Hamano <gitster@pobox.com> | 2009-06-06 23:49:28 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2009-06-06 23:49:28 -0700 |
commit | 3ff7e178dc5c93e9d5b2738b1738a1a230a1b81a (patch) | |
tree | 390381a4758d234cd6ce6b33633eab511d1966fb | |
parent | 6096d7598058d920485d206477f4383ba1a862cb (diff) | |
parent | 801a011dcf41f0415dee81f0500673e058bdee30 (diff) | |
download | git-3ff7e178dc5c93e9d5b2738b1738a1a230a1b81a.tar.gz |
Merge branch 'maint'
* maint:
Documentation: refer to gitworkflows(7) from tutorial and git(1)
daemon: Strictly parse the "extra arg" part of the command
-rw-r--r-- | Documentation/git.txt | 5 | ||||
-rw-r--r-- | Documentation/gittutorial.txt | 4 | ||||
-rw-r--r-- | connect.c | 5 | ||||
-rw-r--r-- | daemon.c | 10 |
4 files changed, 18 insertions, 6 deletions
diff --git a/Documentation/git.txt b/Documentation/git.txt index 68ce6e01b1..56d47709ac 100644 --- a/Documentation/git.txt +++ b/Documentation/git.txt @@ -232,6 +232,8 @@ The link:user-manual.html#git-concepts[git concepts chapter of the user-manual] and linkgit:gitcore-tutorial[7] both provide introductions to the underlying git architecture. +See linkgit:gitworkflows[7] for an overview of recommended workflows. + See also the link:howto-index.html[howto] documents for some useful examples. @@ -649,7 +651,8 @@ SEE ALSO linkgit:gittutorial[7], linkgit:gittutorial-2[7], link:everyday.html[Everyday Git], linkgit:gitcvs-migration[7], linkgit:gitglossary[7], linkgit:gitcore-tutorial[7], -linkgit:gitcli[7], link:user-manual.html[The Git User's Manual] +linkgit:gitcli[7], link:user-manual.html[The Git User's Manual], +linkgit:gitworkflows[7] GIT --- diff --git a/Documentation/gittutorial.txt b/Documentation/gittutorial.txt index c5d5596d89..c7fa949c28 100644 --- a/Documentation/gittutorial.txt +++ b/Documentation/gittutorial.txt @@ -650,6 +650,9 @@ digressions that may be interesting at this point are: smart enough to perform a close-to-optimal search even in the case of complex non-linear history with lots of merged branches. + * linkgit:gitworkflows[7]: Gives an overview of recommended + workflows. + * link:everyday.html[Everyday GIT with 20 Commands Or So] * linkgit:gitcvs-migration[7]: Git for CVS users. @@ -661,6 +664,7 @@ linkgit:gitcvs-migration[7], linkgit:gitcore-tutorial[7], linkgit:gitglossary[7], linkgit:git-help[1], +linkgit:gitworkflows[7], link:everyday.html[Everyday git], link:user-manual.html[The Git User's Manual] @@ -579,7 +579,10 @@ struct child_process *git_connect(int fd[2], const char *url_orig, git_tcp_connect(fd, host, flags); /* * Separate original protocol components prog and path - * from extended components with a NUL byte. + * from extended host header with a NUL byte. + * + * Note: Do not add any other headers here! Doing so + * will cause older git-daemon servers to crash. */ packet_write(fd[1], "%s %s%chost=%s%c", @@ -406,15 +406,15 @@ static char *xstrdup_tolower(const char *str) } /* - * Separate the "extra args" information as supplied by the client connection. + * Read the host as supplied by the client connection. */ -static void parse_extra_args(char *extra_args, int buflen) +static void parse_host_arg(char *extra_args, int buflen) { char *val; int vallen; char *end = extra_args + buflen; - while (extra_args < end && *extra_args) { + if (extra_args < end && *extra_args) { saw_extended_args = 1; if (strncasecmp("host=", extra_args, 5) == 0) { val = extra_args + 5; @@ -436,6 +436,8 @@ static void parse_extra_args(char *extra_args, int buflen) /* On to the next one */ extra_args = val + vallen; } + if (extra_args < end && *extra_args) + die("Invalid request"); } /* @@ -545,7 +547,7 @@ static int execute(struct sockaddr *addr) hostname = canon_hostname = ip_address = tcp_port = NULL; if (len != pktlen) - parse_extra_args(line + len + 1, pktlen - len - 1); + parse_host_arg(line + len + 1, pktlen - len - 1); for (i = 0; i < ARRAY_SIZE(daemon_service); i++) { struct daemon_service *s = &(daemon_service[i]); |