From 76755c0e68acace0931ad0cab053bbeb2631da37 Mon Sep 17 00:00:00 2001 From: Sergey Biryukov Date: Fri, 17 May 2019 13:28:15 +0000 Subject: [PATCH] Media: Fix deletion of files on Windows. `wp_delete_file_from_directory()` should always normalize file paths before comparing. Props tonybogdanov, SergeyBiryukov. Fixes #47185. git-svn-id: https://develop.svn.wordpress.org/trunk@45352 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-includes/functions.php | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/wp-includes/functions.php b/src/wp-includes/functions.php index 7ebae8b155..c6542d62d9 100644 --- a/src/wp-includes/functions.php +++ b/src/wp-includes/functions.php @@ -6282,13 +6282,21 @@ function wp_delete_file( $file ) { */ function wp_delete_file_from_directory( $file, $directory ) { if ( wp_is_stream( $file ) ) { - $real_file = wp_normalize_path( $file ); - $real_directory = wp_normalize_path( $directory ); + $real_file = $file; + $real_directory = $directory; } else { $real_file = realpath( wp_normalize_path( $file ) ); $real_directory = realpath( wp_normalize_path( $directory ) ); } + if ( false !== $real_file ) { + $real_file = wp_normalize_path( $real_file ); + } + + if ( false !== $real_directory ) { + $real_directory = wp_normalize_path( $real_directory ); + } + if ( false === $real_file || false === $real_directory || strpos( $real_file, trailingslashit( $real_directory ) ) !== 0 ) { return false; }