OK, combining suggestions by Gilles and Dominique here is what we
could do:

* add a new sttribute for maxSymlinkRecursionDepth (better name
  appreciated) and make it default to 5 (up for discussion as well).
  This limits how many times the same symlink can be followed.

* Keep a stack of simple directory names (only the file name portion,
  no leading directory and certainly not the canonical path) that
  holds the names of all directories traversed so far while doing the
  traversal.

* If the same simple name appears for the MAXth time, check whether
  that directory is a symlink.  If it is, check its canonical name and
  the canonical names of all other occurances of directories with the
  same name.  If they all point to the same location, ignore the
  directory.  If they point to different locations recurse but revisit
  things if the same name is encountered for the (MAX + 1)th time and
  so on.

This should address infinite loops and it should avoid
getCanonicalPath as much as possible.

I first thought it would be enough to check whether the link pointed
to a parent directory but it is possible to create inifinte loops with
two "cooperating" symlinks where neither link would point to a parent
of its own.

Does that sound OK?

Stefan

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to