From d936f9ffe6217b5bc5b1a5bb151c80671dc8780a Mon Sep 17 00:00:00 2001 From: Jonathan Desrosiers Date: Mon, 2 Nov 2020 19:11:32 +0000 Subject: [PATCH] Upgrade/Install: Prevent removal of additional data from plugin update info. This switches to using `wp_parse_args()` instead of a combination of `array_merge()` and `array_intersect_key()` when ensuring that all expected default keys are present in the update information for a plugin. This prevents non-default data returned by 3rd-party plugins from being unintentionally stripped out. Props peterwilsoncc, chriscct7. Fixes #51609. git-svn-id: https://develop.svn.wordpress.org/trunk@49477 602fd350-edb4-49c9-b593-d223f7449a82 --- src/wp-admin/includes/class-wp-debug-data.php | 2 +- src/wp-admin/includes/class-wp-plugins-list-table.php | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/wp-admin/includes/class-wp-debug-data.php b/src/wp-admin/includes/class-wp-debug-data.php index 0419aa4cdf..1f3ebf8f0b 100644 --- a/src/wp-admin/includes/class-wp-debug-data.php +++ b/src/wp-admin/includes/class-wp-debug-data.php @@ -974,7 +974,7 @@ class WP_Debug_Data { 'requires_php' => '', 'compatibility' => new stdClass(), ); - $item = array_merge( $item, array_intersect_key( $plugin, $item ) ); + $item = wp_parse_args( $plugin, $item ); } $auto_update_forced = wp_is_auto_update_forced_for_item( 'plugin', null, (object) $item ); 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 b1917bac31..830724c59b 100644 --- a/src/wp-admin/includes/class-wp-plugins-list-table.php +++ b/src/wp-admin/includes/class-wp-plugins-list-table.php @@ -230,7 +230,7 @@ class WP_Plugins_List_Table extends WP_List_Table { 'compatibility' => new stdClass(), ); - $filter_payload = (object) array_merge( $filter_payload, array_intersect_key( $plugin_data, $filter_payload ) ); + $filter_payload = (object) wp_parse_args( $plugin_data, $filter_payload ); $auto_update_forced = wp_is_auto_update_forced_for_item( 'plugin', null, $filter_payload );