Make WordPress Core


Ignore:
Timestamp:
10/18/2021 12:51:00 PM (5 years ago)
Author:
hellofromTonya
Message:

Cron: Fix malformed cron array in wp_schedule_single_event() when _get_cron_array() returns false.

In wp_schedule_single_event(), the cron info array is retrieved via a call to _get_cron_array() and straight away cast to an array. But as the documentation for that function (correctly) states, the return type of that function is array|false, where false is returned for a site where no cron jobs have been scheduled (yet).

In the case that _get_cron_array() would return false, this would now unintentionally create an array with a single entry with key 0 and as the value false.

This is a bug. Fixed now by adding validation to the output of _get_cron_array() and initializing $crons to an empty array if false was returned.

Tests added first to prove the bug (a) was introduced in #44818 [44917] and (b) is now fixed.

Follow-up to [44917].

Props jrf, peterwilsoncc.
Fixes #53950.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/cron.php

    r51695 r51916  
    119119         * are considered duplicates.
    120120         */
    121         $crons     = (array) _get_cron_array();
     121        $crons = _get_cron_array();
     122        if ( ! is_array( $crons ) ) {
     123                $crons = array();
     124        }
     125
    122126        $key       = md5( serialize( $event->args ) );
    123127        $duplicate = false;
Note: See TracChangeset for help on using the changeset viewer.