On Wed, Jun 8, 2011 at 11:55 AM, Theo Niessink <niessink@xxxxxxxxxxxx> wrote: > Junio C Hamano wrote: >> Here is what I queued last night. If it looks Ok then I'll merge it down >> to 'next'. > > I have run a couple of quick tests, and everything seems OK, except the > following backslashed paths, which are verified OK while they should be > rejected: > > foo\.\bar > foo\..\bar > > This is caused by verify_dotfile(), which doesn't use is_dir_sep(). So I > propose this patch on verify_dotfile(): > > diff --git a/read-cache.c b/read-cache.c > index 282c0c1..72be7cd 100644 > --- a/read-cache.c > +++ b/read-cache.c > @@ -726,11 +726,12 @@ static int verify_dotfile(const char *rest) > * has already been discarded, we now test > * the rest. > */ > - switch (*rest) { > + > /* "." is not allowed */ > - case '\0': case '/': > + if (*rest == '\0' || is_dir_sep(*rest)) > return 0; > > + switch (*rest) { > /* > * ".git" followed by NUL or slash is bad. This > * shares the path end test with the ".." case. > @@ -743,7 +744,7 @@ static int verify_dotfile(const char *rest) > rest += 2; > /* fallthrough */ > case '.': > - if (rest[1] == '\0' || rest[1] == '/') > + if (rest[1] == '\0' || is_dir_sep(rest[1])) > return 0; > } > return 1; > > > This looks obviously correct to me. Thanks for spotting the problem. Would you mind writing up a commit-message and supply a sign-off? -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html