From 479596acda08bc9bcbb850aa91cdde90f8e3099e Mon Sep 17 00:00:00 2001 From: "Dominik Schilling (ocean90)" Date: Wed, 17 Feb 2016 20:14:37 +0000 Subject: [PATCH] Plugins: Remove slashes from search terms and use `urldecode()` in non-URL contexts. Fixes #35712. git-svn-id: https://develop.svn.wordpress.org/trunk@36560 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/class-wp-plugins-list-table.php | 6 +++--- src/wp-admin/plugins.php | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/wp-admin/includes/class-wp-plugins-list-table.php b/src/wp-admin/includes/class-wp-plugins-list-table.php index 9fb81030ef..b84ebd18c4 100644 --- a/src/wp-admin/includes/class-wp-plugins-list-table.php +++ b/src/wp-admin/includes/class-wp-plugins-list-table.php @@ -268,7 +268,7 @@ class WP_Plugins_List_Table extends WP_List_Table { } /** - * @global string $s + * @global string $s URL encoded search term. * * @param array $plugin * @return bool @@ -277,7 +277,7 @@ class WP_Plugins_List_Table extends WP_List_Table { global $s; foreach ( $plugin as $value ) { - if ( is_string( $value ) && false !== stripos( strip_tags( $value ), $s ) ) { + if ( is_string( $value ) && false !== stripos( strip_tags( $value ), urldecode( $s ) ) ) { return true; } } @@ -316,7 +316,7 @@ class WP_Plugins_List_Table extends WP_List_Table { global $plugins; if ( ! empty( $_REQUEST['s'] ) ) { - $s = esc_html( $_REQUEST['s'] ); + $s = esc_html( wp_unslash( $_REQUEST['s'] ) ); printf( __( 'No plugins found for “%s”.' ), $s ); diff --git a/src/wp-admin/plugins.php b/src/wp-admin/plugins.php index a55001e253..472c5507cf 100644 --- a/src/wp-admin/plugins.php +++ b/src/wp-admin/plugins.php @@ -18,7 +18,7 @@ $pagenum = $wp_list_table->get_pagenum(); $action = $wp_list_table->current_action(); $plugin = isset($_REQUEST['plugin']) ? $_REQUEST['plugin'] : ''; -$s = isset($_REQUEST['s']) ? urlencode($_REQUEST['s']) : ''; +$s = isset($_REQUEST['s']) ? urlencode( wp_unslash( $_REQUEST['s'] ) ) : ''; // Clean up request URI from temporary args for screen options/paging uri's to work as expected. $_SERVER['REQUEST_URI'] = remove_query_arg(array('error', 'deleted', 'activate', 'activate-multi', 'deactivate', 'deactivate-multi', '_error_nonce'), $_SERVER['REQUEST_URI']); @@ -486,7 +486,7 @@ if ( ( ! is_multisite() || is_network_admin() ) && current_user_can('install_plu if ( strlen( $s ) ) { /* translators: %s: search keywords */ - printf( '' . __( 'Search results for “%s”' ) . '', esc_html( $s ) ); + printf( '' . __( 'Search results for “%s”' ) . '', esc_html( urldecode( $s ) ) ); } ?>