Skip to content

Commit 105c7aa

Browse files
committed
REST API: Guard against passing null as $prepared_args to WP_REST_Posts_Controller::prepare_items_query().
The variable may get set to `null` by a filter or subclass. Developed in #7625 Follow-up to r38832. Props apermo, dmsnell, westonruter. Fixes #62287. git-svn-id: https://develop.svn.wordpress.org/trunk@61773 602fd350-edb4-49c9-b593-d223f7449a82
1 parent d45dc6b commit 105c7aa

File tree

2 files changed

+14
-2
lines changed

2 files changed

+14
-2
lines changed

src/wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,10 @@ static function ( $format ) {
441441
* @param array $args Array of arguments for WP_Query.
442442
* @param WP_REST_Request $request The REST API request.
443443
*/
444-
$args = apply_filters( "rest_{$this->post_type}_query", $args, $request );
444+
$args = apply_filters( "rest_{$this->post_type}_query", $args, $request );
445+
if ( ! is_array( $args ) ) {
446+
$args = array();
447+
}
445448
$query_args = $this->prepare_items_query( $args, $request );
446449

447450
$posts_query = new WP_Query();
@@ -1211,6 +1214,9 @@ public function delete_item( $request ) {
12111214
*/
12121215
protected function prepare_items_query( $prepared_args = array(), $request = null ) {
12131216
$query_args = array();
1217+
if ( ! is_array( $prepared_args ) ) {
1218+
$prepared_args = array();
1219+
}
12141220

12151221
foreach ( $prepared_args as $key => $value ) {
12161222
/**

src/wp-includes/rest-api/endpoints/class-wp-rest-revisions-controller.php

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -298,7 +298,10 @@ public function get_items( $request ) {
298298
}
299299

300300
/** This filter is documented in wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php */
301-
$args = apply_filters( 'rest_revision_query', $args, $request );
301+
$args = apply_filters( 'rest_revision_query', $args, $request );
302+
if ( ! is_array( $args ) ) {
303+
$args = array();
304+
}
302305
$query_args = $this->prepare_items_query( $args, $request );
303306

304307
$revisions_query = new WP_Query();
@@ -549,6 +552,9 @@ public function delete_item( $request ) {
549552
*/
550553
protected function prepare_items_query( $prepared_args = array(), $request = null ) {
551554
$query_args = array();
555+
if ( ! is_array( $prepared_args ) ) {
556+
$prepared_args = array();
557+
}
552558

553559
foreach ( $prepared_args as $key => $value ) {
554560
/** This filter is documented in wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php */

0 commit comments

Comments
 (0)