Make WordPress Core

Ticket #6871: 6871.5.patch

File 6871.5.patch, 1.9 KB (added by azaozz, 17 years ago)
  • wp-admin/includes/plugin.php

     
    304304                return;
    305305        }
    306306
     307        //Invalid is any plugin that is deactivated due to error.
     308        $invalid = array();
     309
    307310        // If a plugin file does not exist, remove it from the list of active
    308311        // plugins.
    309312        foreach ( $check_plugins as $check_plugin ) {
    310313                $result = validate_plugin($check_plugin);
    311314                if ( is_wp_error( $result ) ) {
     315                        $invalid[$check_plugin] = $result;
    312316                        deactivate_plugins( $check_plugin, true);
    313317                }
    314318        }
     319        return $invalid;
    315320}
    316321
    317322function validate_plugin($plugin) {
  • wp-admin/plugins.php

     
    165165$title = __('Manage Plugins');
    166166require_once('admin-header.php');
    167167
    168 validate_active_plugins();
    169 
     168$invalid = validate_active_plugins();
     169if( !empty($invalid) )
     170        foreach($invalid as $plugin_file => $error)
     171                echo '<div id="message" class="updated fade"><p>' . sprintf(__('The plugin <code>%s</code> has been <strong>deactivated</strong> due to <em>"%s"</em>.'), $plugin_file, $error->get_error_message()) . '</p></div>';
    170172?>
    171173
    172174<?php if ( isset($_GET['error']) ) : ?>
  • wp-settings.php

     
    417417        $current_plugins = get_option('active_plugins');
    418418        if ( is_array($current_plugins) ) {
    419419                foreach ($current_plugins as $plugin) {
    420                         if ('' != $plugin && file_exists(WP_PLUGIN_DIR . '/' . $plugin))
     420                        if ( '' != $plugin && strpos('/' . $plugin, '/../') === false && strpos('\\' . $plugin, '\\..\\') === false
     421                        && file_exists(WP_PLUGIN_DIR . '/' . $plugin) )
    421422                                include_once(WP_PLUGIN_DIR . '/' . $plugin);
    422423                }
    423424        }