Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9fade2fa authored by Colin Cross's avatar Colin Cross Committed by android-build-merger
Browse files

findleaves.py: prevent recursion into symlink loops am: 7829ebfe am: 72276373 am: 7cb42e13

am: 25dabdeb

Change-Id: Ie5b7e506c74ae984b5e3751498bdda8b68c3e3a2
parents 54f1ae45 25dabdeb
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@ import sys
def perform_find(mindepth, prune, dirlist, filenames):
  result = []
  pruneleaves = set(map(lambda x: os.path.split(x)[1], prune))
  seen = set()
  for rootdir in dirlist:
    rootdepth = rootdir.count("/")
    for root, dirs, files in os.walk(rootdir, followlinks=True):
@@ -52,6 +53,18 @@ def perform_find(mindepth, prune, dirlist, filenames):
        if filename in files:
          result.append(os.path.join(root, filename))
          del dirs[:]

      # filter out inodes that have already been seen due to symlink loops
      i = 0
      while i < len(dirs):
        st = os.stat(os.path.join(root, dirs[i]))
        key = (st.st_dev, st.st_ino)
        if key in seen:
          del dirs[i]
        else:
          i += 1
          seen.add(key)

  return result

def usage():