From 4568111c00813756a3a34a381d684b8354fc4438 Mon Sep 17 00:00:00 2001 From: Inverle Date: Fri, 2 May 2025 09:47:57 +0200 Subject: Fix file serving for symlinked extensions (#7545) * Fix file serving for symlinked extensions from ext.php * Don't resolve symlink when deleting extension * Minor syntax --------- Co-authored-by: Alexandre Alapetite --- lib/lib_rss.php | 8 ++++++++ p/ext.php | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/lib/lib_rss.php b/lib/lib_rss.php index fac7af60e..e1618a2ef 100644 --- a/lib/lib_rss.php +++ b/lib/lib_rss.php @@ -922,6 +922,14 @@ function recursive_unlink(string $dir): bool { return true; } + if (is_link($dir)) { + if (PHP_OS_FAMILY === "Windows") { + return rmdir($dir); + } + + return unlink($dir); + } + $files = array_diff(scandir($dir) ?: [], ['.', '..']); foreach ($files as $filename) { $filename = $dir . '/' . $filename; diff --git a/p/ext.php b/p/ext.php index 98684e45e..f470b7210 100644 --- a/p/ext.php +++ b/p/ext.php @@ -11,6 +11,11 @@ function get_absolute_filename(string $file_name): string { $third_party_extension = realpath(THIRDPARTY_EXTENSIONS_PATH . '/' . $file_name); if (false !== $third_party_extension) { + $original_dir = THIRDPARTY_EXTENSIONS_PATH . '/' . explode('/', $file_name)[0]; + if (is_link($original_dir)) { + return THIRDPARTY_EXTENSIONS_PATH . '/' . $file_name; + } + return $third_party_extension; } -- cgit v1.2.3