On Thu, 4 Sep 2008, Matt Benson <[EMAIL PROTECTED]> wrote:
> In a nutshell, it seems we should keep track of the
> canonical paths scanned and refuse to recurse them for
> a path of infinite depth (i.e. one containing "**").
The situation of the testcase is (you'll need a monospaced font 8-)
,------>I
| / \
| / \
| base B
| / \
| / \
`--A file.txt
the fileset's basedir is "base".
> It could be possible to match a path containing a
> recursive symlink by > 1 path of different lengths.
> So the infinite depth case is the one that could cause
> infinite recursion and is thus the one that should be
> guarded...
You mean an explicit A/base/A/B/file.txt would match but the same file
wouldn't be included if I used A/base/A/B/** or A/base/A/** ?
I could live with that, but it may seem confusing. Not that I'd
expect anybody to use these kinds of patterns.
Would **/file.txt match A/B/file.txt at all?
> this shouldn't break anything that was already working,
True. Most ** cases would run into infinite loops or fail with an
exception caused by the OS (Linux seems to limit the recursion depths
in a similar way Dominique suggests).
In my example above A/base/A/B/** wouldn't cause an infinite loop, so
the logic of not following a symlink must only be triggered if the
symlink itself would be part of the ** part.
In the end Dominique's idea may be simpler since we'd have to think
through cases of multiple patterns where one mathes exactly and the
other one is inside the ** part.
Stefan
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]