From 39d6d8c03c48c171d7973136d51fe8121fe1967f Mon Sep 17 00:00:00 2001 From: Tonya Mork Date: Tue, 7 Dec 2021 16:49:22 +0000 Subject: [PATCH] Upgrade/Install: Fix moving plugins folder in `WP_Upgrader:: move_to_temp_backup_dir()`. [51815] introduced the creation of a temporary backup of plugins before updating. The `move()` (and later, `move_dir()`) call) uses a `$src` parameter. For Hello Dolly, this is `/wp-contents/plugins/.` (note the period at the end). For users on Linux and Mac, this doesn't appear to cause any problems. However, on Windows, the move causes the plugins folder to be moved which then causes a failure when attempting to call `mkdir()`. This commit skips any plugin whose slug is `'.'` as this slug results in the `$src` value ending in a period. Follow-up to [51815]. Props costdev, boniu91, hellofromTonya. Fixes #54543. git-svn-id: https://develop.svn.wordpress.org/trunk@52337 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/class-wp-upgrader.php | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/wp-admin/includes/class-wp-upgrader.php b/src/wp-admin/includes/class-wp-upgrader.php index 396672585d..d17a7a7de6 100644 --- a/src/wp-admin/includes/class-wp-upgrader.php +++ b/src/wp-admin/includes/class-wp-upgrader.php @@ -1025,6 +1025,17 @@ class WP_Upgrader { return false; } + /** + * Skip any plugin that has "." as its slug. + * A slug of "." will result in a `$src` value ending in a period. + * + * On Windows, this will cause the 'plugins' folder to be moved, + * and will cause a failure when attempting to call `mkdir()`. + */ + if ( '.' === $args['slug'] ) { + return false; + } + $dest_dir = $wp_filesystem->wp_content_dir() . 'upgrade/temp-backup/'; // Create the temp-backup directory if it doesn't exist. if ( (