From: Wincent Colaiuta Date: Wed, 06 Feb 2008 11:39:36 GMT Subject: Re: git-daemon breakage in 1.5.4 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ó: >>> 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 > 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;