On Tue, 28 Nov 2006, Vlad Georgescu wrote:
> On 11/28/06, Daniel Rall <dlr@collab.net> wrote:
> >On Sun, 26 Nov 2006, Vlad Georgescu wrote:
> >...
> >> It seems that, on Windows, svn_repos_find_root_path will get stuck in
> >> an infinite loop if it is given an absolute path that doesn't actually
> >> contain a repository root. I discovered this after mistyping the root
> >> path when invoking svnserve. The relevant code is this:
> >>
> >>  while (1)
> >>    {
> >>      /* Try to decode the path, so we don't fail if it contains 
> >characters
> >>         that aren't supported by the OS filesystem.  The subversion fs
> >>         isn't restricted by the OS filesystem character set. */
> >>      err = svn_utf_cstring_from_utf8(&decoded, candidate, pool);
> >>      if (!err && check_repos_path(candidate, pool))
> >>        break;
> >>      svn_error_clear(err);
> >>      if (candidate[0] == '\0' || strcmp(candidate, "/") == 0)
> >>        return NULL;
> >>      candidate = svn_path_dirname(candidate, pool);
> >>    }
> >>
> >> Notice that it only gets out of the loop when it encounters the Unix
> >> root directory. The following patch fixes this problem:
> >>
> >> [[[
> >> * subversion/libsvn_repos/repos.c
> >>  (svn_repos_find_root_path): Check that we reached the filesystem
> >> root in a cross-platform
> >>   manner.
> >> ]]]
> >
> >Thanks Vlad, committed in r22483.
> 
> On a related note, shouldn't svnserve check the validity of the --root
> argument? That's how I ran into this problem in the first place.
Sounds good to me.  If no one thinks different, do you mind putting
together a patch?
- Dan
- application/pgp-signature attachment: stored
 
 
Received on Tue Nov 28 23:46:05 2006