On Fri, Oct 18, 2013 at 6:38 PM, C. Michael Pilato <cmpil...@collab.net>wrote:

> On 10/18/2013 12:20 PM, Stefan Fuhrmann wrote:
> > On Fri, Oct 18, 2013 at 5:44 PM, Bert Huijben <b...@qqmail.nl
> >     Then most likely there is a difference between implementation and
> >     documentation
> >
> >     svn ls -R path
> >
> >     will use this function with deeper names.
> >
> >     See list.c get_dir_contents(), which calls itself recursively with
> >     longer and longer components.
> >
> >     And I'm pretty sure there are also third party clients that use this
> >     feature via their own usage of the ra layer.
> >
> >
> > That's what I originally thought as well. As it turns out,
> > the path gets combined above the RA layer in lib_client.
> >
> > I spent most of today figuring out why svn ls -R left
> > my laptop idle (see r1533530), so I had exactly the
> > use-case that you described.
>
> Bert, are you perhaps thinking of the *input* to svn_ra_get_dir(), which
> accepts a path relative to the session URL that can have an arbitrary
> number of components?
>
> Stefan is correct that -- at least in the case of our own libraries --
> the "name" parsed from the get-dir *response* should only be a single
> path component.  (Its source is the svn_fs_dir_entries hash keys, which
> are single-component relpaths.)
>
> That said, Stefan, we made a conscious decision to sanitize paths on
> both sides of the wire because we don't control the wire itself.  For
> example, your libsvn_ra_svn-wielding client might not be talking to
> 'svnserve', but to a third-party custom implementation of the Subversion
> server that speaks the 'svn' protocol.  As such, there is an opportunity
> for malformed data to be returned, and the canonicalization protects our
> client (to a degree) from certain potentially problems there.  If
> anything, an additional check should be *added* at that call site to
> verify that 'name' is, in fact, but a single path component.
>

This function does not receive paths. It is basically reading a
directory hash and the incoming names must be file / directory
names. r1533812 adds a check for that error condition.

-- Stefan^2.

Reply via email to