diff options
| author | 2025-05-02 09:47:57 +0200 | |
|---|---|---|
| committer | 2025-05-02 09:47:57 +0200 | |
| commit | 4568111c00813756a3a34a381d684b8354fc4438 (patch) | |
| tree | b91fb3b71611f83378268d5a46e2b2ec43029a7f | |
| parent | df6e57c289c472edda773cb1733040ab62395dbf (diff) | |
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 <alexandre@alapetite.fr>
| -rw-r--r-- | lib/lib_rss.php | 8 | ||||
| -rw-r--r-- | p/ext.php | 5 |
2 files changed, 13 insertions, 0 deletions
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; @@ -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; } |
