From 58e4a21f0720cff33b7594f268bf2f9427b671c6 Mon Sep 17 00:00:00 2001 From: Dion Hulse Date: Tue, 5 Nov 2013 05:42:23 +0000 Subject: [PATCH] When checking filesystem permissions for core updates, only check the permissions of the files which we need to alter. Props nacin for initial patch. Fixes #25771 for trunk git-svn-id: https://develop.svn.wordpress.org/trunk@26014 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/update-core.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/wp-admin/includes/update-core.php b/src/wp-admin/includes/update-core.php index b841268b5e..d466607079 100644 --- a/src/wp-admin/includes/update-core.php +++ b/src/wp-admin/includes/update-core.php @@ -697,6 +697,9 @@ function update_core($from, $to) { // Check to see which files don't really need updating - only available for 3.7 and higher if ( function_exists( 'get_core_checksums' ) ) { + // Find the local version of the working directory + $working_dir_local = WP_CONTENT_DIR . '/upgrade/' . basename( $from ) . $distro; + $checksums = get_core_checksums( $wp_version, isset( $wp_local_package ) ? $wp_local_package : 'en_US' ); if ( is_array( $checksums ) && isset( $checksums[ $wp_version ] ) ) $checksums = $checksums[ $wp_version ]; // Compat code for 3.7-beta2 @@ -706,6 +709,8 @@ function update_core($from, $to) { continue; if ( ! file_exists( ABSPATH . $file ) ) continue; + if ( ! file_exists( $working_dir_local . $file ) ) + continue; if ( md5_file( ABSPATH . $file ) === $checksum ) $skip[] = $file; else @@ -752,9 +757,10 @@ function update_core($from, $to) { $failed = array(); if ( isset( $checksums ) && is_array( $checksums ) ) { foreach ( $checksums as $file => $checksum ) { - if ( 0 === strpos( $file, 'wp-content' ) ) + if ( 'wp-content' == substr( $file, 0, 10 ) ) + continue; + if ( ! file_exists( $working_dir_local . $file ) ) continue; - if ( file_exists( ABSPATH . $file ) && md5_file( ABSPATH . $file ) == $checksum ) $skip[] = $file; else @@ -765,8 +771,6 @@ function update_core($from, $to) { // Some files didn't copy properly if ( ! empty( $failed ) ) { $total_size = 0; - // Find the local version of the working directory - $working_dir_local = WP_CONTENT_DIR . '/upgrade/' . basename( $from ) . $distro; foreach ( $failed as $file ) { if ( file_exists( $working_dir_local . $file ) ) $total_size += filesize( $working_dir_local . $file );