Code

daemon: parse_host_and_port SIGSEGV if port is specified
authorImre Deak <imre.deak@gmail.com>
Sat, 20 Mar 2010 02:23:58 +0000 (04:23 +0200)
committerJunio C Hamano <gitster@pobox.com>
Sat, 20 Mar 2010 15:49:31 +0000 (08:49 -0700)
This typo will lead to git-daemon dying any time the connect
string includes a port after the host= attribute. This can lead
for example to one of the following error messages on the client
side when someone tries git clone git://...:<port>.

When the daemon is running on localhost:
  fatal: The remote end hung up unexpectedly

or when the daemon is connected through an ssh tunnel:
  fatal: protocol error: bad line length character: erro

In the latter case 'erro' comes from the daemon's reply:
  error: git-daemon died of signal 11

Signed-off-by: Imre Deak <imre.deak@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
daemon.c

index 3769b6f570f20ed320fd5345281a5577c80d0a58..7d9e1c03e88d7785f4ff0d534563ba5778fbc244 100644 (file)
--- a/daemon.c
+++ b/daemon.c
@@ -420,7 +420,7 @@ static void parse_host_and_port(char *hostport, char **host,
                *host = hostport;
                *port = strrchr(hostport, ':');
                if (*port) {
-                       *port = '\0';
+                       **port = '\0';
                        ++*port;
                }
        }