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 ) ) );
}
?>