Subject: Re: [PATCH 4/4] git-daemon support for user-relative paths.

From: Andreas Ericsson <[email-masked]>
Date: Wed, 02 Nov 2005 09:17:18 +0100

Junio C Hamano wrote:
> Andreas Ericsson <[email-masked]> writes:
> 
> 
>>+             [--timeout=n] [--init-timeout=n] [--strict-paths] [directory...]
> 
> 
> Why not just --strict?
> 
> 
>>@@ -10,16 +10,18 @@
>> #include "pkt-line.h"
>> #include "cache.h"
>> 
>>-static int log_syslog;
>>+static int log_syslog = 0;
> 
> 
> I'd drop this.
> 

No can do. It has to be set either here or down in main. It's nice to 
have the default in the declaration.

> 
>> /* If this is set, git-daemon-export-ok is not required */
>> static int export_all_trees = 0;
>> 
>>@@ -81,69 +83,49 @@ static void loginfo(const char *err, ...
>> 	va_end(params);
>> }
>> 
>>-static int path_ok(const char *dir)
>>+static const char *path_ok(const char *dir)
>> {
>>+	const char *path = is_git_repo(dir, strict_paths);
>>+	/* No such directory or not a git archive */
>>+	if(!path) {
>>+		logerror("'%s': unable to chdir or not a git archive", dir);
>>+		return NULL;
>> 	}
>> 
>> 	if ( ok_paths && *ok_paths ) {
>>+		char **pp = NULL;
>>+		int dirlen = strlen(path);
>> 
>> 		for ( pp = ok_paths ; *pp ; pp++ ) {
>> 			int len = strlen(*pp);
>>+			if ( len <= dirlen && !strncmp(*pp, path, len) ) {
>>+				if( path[len] == '\0' || (!strict_paths && path[len] == '/') )
>>+					return path;
>> 			}
>> 		}
> 
> 
> Sorry, but I am a bit confused.  Does this mean that you need to
> list all directories under --strict-paths, instead of saying
> "/pub/scm and everything under it is OK"?
> 

Only if --strict-paths is set, otherwise it works as usual. It's 
documented in the man-page, but perhaps it's a bit too paranoid.

> I like the general direction this set is taking, but let's let
> it simmer for a while.
> 

Ok. I'll take that to mean "hold off on the --server-root and --userdir 
patch for a while" then.

-- 
Andreas Ericsson                   [email-masked]
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231