do not follow symlinks
authorMarcel van der Veldt <m.vanderveldt@outlook.com>
Sat, 21 May 2022 00:14:44 +0000 (02:14 +0200)
committerMarcel van der Veldt <m.vanderveldt@outlook.com>
Sat, 21 May 2022 00:14:44 +0000 (02:14 +0200)
music_assistant/controllers/music/providers/filesystem.py

index 0450a13e2a161a4f9f9e00a1f461bfec4c3a3f92..b4e357174de98554ccf1841c5986b89224b6fe76 100644 (file)
@@ -43,9 +43,13 @@ from music_assistant.models.provider import MusicProvider
 
 async def scantree(path: str) -> AsyncGenerator[os.DirEntry, None]:
     """Recursively yield DirEntry objects for given directory."""
+
+    def is_dir(entry: os.DirEntry) -> bool:
+        return entry.is_dir(follow_symlinks=False)
+
     loop = asyncio.get_running_loop()
     for entry in await loop.run_in_executor(None, os.scandir, path):
-        if await loop.run_in_executor(None, entry.is_dir):
+        if await loop.run_in_executor(None, is_dir, entry):
             async for subitem in scantree(entry.path):
                 yield subitem
         else: