Re: git-daemon breakage in 1.5.4
- From
Wincent Colaiuta <win@wincent.com>
- Date
- Feb 6, 2008, 11:39 UTC
- Message-ID
- <57A122D1-6D7E-4210-A624-75D19ECC0258@wincent.com>
- In-Reply-To
- <47A98BD9.5040306@viscovery.net>
El 6/2/2008, a las 11:28, Johannes Sixt escribió:
Show 16 quoted lines
>>> Which makes me think that you xinetd doesn't pass a PATH to git- >>> daemon >>> that includes /usr/local/bin. Add this to your /etc/xinetd.d/git: >>> >>> env = PATH=/bin:/usr/bin:/usr/local/bin >>> >>> (not tested). >> >> That works. Thanks. >> >> It's an acceptable workaround (the other is installing /usr instead >> of >> /usr/local). Seeing as it worked in 1.5.3.8, does this qualify as >> breakage, or should we not worry about it? > > Does this patch make a difference? (It does for me.)
Nope. I applied this on top of "maint", removed the PATH setup from / etc/xinetd.d/git, and get the "remote end hung up unexpectedly" again. If I restore the PATH setup then it works, but then, so does does 1.5.4.
Cheers, Wincent
Show 26 quoted lines
> diff --git a/daemon.c b/daemon.c
> index 41a60af..c99285e 100644
> --- a/daemon.c
> +++ b/daemon.c
> @@ -1026,6 +1026,7 @@ int main(int argc, char **argv)
> struct group *group;
> gid_t gid = 0;
> int i;
> + char *cmd_path = strdup(argv[0]), *slash;
>
> /* Without this we cannot rely on waitpid() to tell
> * what happened to our children.
> @@ -1184,6 +1185,13 @@ int main(int argc, char **argv)
> if (strict_paths && (!ok_paths || !*ok_paths))
> die("option --strict-paths requires a whitelist");
>
> + slash = strrchr(cmd_path, '/');
> + if (slash) {
> + *slash = 0;
> + setup_path(cmd_path);
> + }
> + free(cmd_path);
> +
> if (inetd_mode) {
> struct sockaddr_storage ss;
> struct sockaddr *peer = (struct sockaddr *)&ss;