Make WordPress Core

Changeset 47965


Ignore:
Timestamp:
06/10/2020 06:22:39 PM (6 years ago)
Author:
whyisjake
Message:

General: Backport several commits for release.

  • Embeds: Ensure that the title attribute is set correctly on embeds.
  • Editor: Prevent HTML decoding on by setting the proper editor context.
  • Formatting: Ensure that wp_validate_redirect() sanitizes a wider variety of characters.
  • Themes: Ensure a broken theme name is returned properly.
  • Administration: Add a new filter to extend set-screen-option.

Merges [47947-47951] to the 3.8 branch.
Props xknown, sstoqnov, vortfu, SergeyBiryukov, whyisjake.

Location:
branches/3.8
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/3.8

  • branches/3.8/src/wp-admin/includes/media.php

    r40469 r47965  
    24082408
    24092409        <label for="content"><strong><?php _e( 'Description' ); ?></strong></label>
    2410         <?php wp_editor( $post->post_content, 'attachment_content', $editor_args ); ?>
     2410        <?php wp_editor( format_to_edit( $post->post_content ), 'attachment_content', $editor_args ); ?>
    24112411
    24122412        </div>
  • branches/3.8/src/wp-admin/includes/misc.php

    r26937 r47965  
    391391                                break;
    392392                        default:
    393                                 $value = apply_filters('set-screen-option', false, $option, $value);
     393                                if ( '_page' === substr( $option, -5 ) || 'layout_columns' === $option ) {
     394                                        /**
     395                                         * Filters a screen option value before it is set.
     396                                         *
     397                                         * The filter can also be used to modify non-standard [items]_per_page
     398                                         * settings. See the parent function for a full list of standard options.
     399                                         *
     400                                         * Returning false to the filter will skip saving the current option.
     401                                         *
     402                                         * @since 2.8.0
     403                                         * @since 5.4.2 Only applied to options ending with '_page',
     404                                         *              or the 'layout_columns' option.
     405                                         *
     406                                         * @see set_screen_options()
     407                                         *
     408                                         * @param bool   $keep   Whether to save or skip saving the screen option value.
     409                                         *                       Default false.
     410                                         * @param string $option The option name.
     411                                         * @param int    $value  The number of rows to use.
     412                                         */
     413                                        $value = apply_filters( 'set-screen-option', false, $option, $value ); // phpcs:ignore WordPress.NamingConventions.ValidHookName.UseUnderscores
     414                                }
     415
     416                                /**
     417                                 * Filter a screen option value before it is set.
     418                                 *
     419                                 * The dynamic portion of the hook, `$option`, refers to the option name.
     420                                 *
     421                                 * Returning false to the filter will skip saving the current option.
     422                                 *
     423                                 * @since 5.4.2
     424                                 *
     425                                 * @see set_screen_options()
     426                                 *
     427                                 * @param bool   $keep   Whether to save or skip saving the screen option value.
     428                                 *                       Default false.
     429                                 * @param string $option The option name.
     430                                 * @param int    $value  The number of rows to use.
     431                                 */
     432                                $value = apply_filters( "set_screen_option_{$option}", false, $option, $value );
     433
    394434                                if ( false === $value )
    395435                                        return;
  • branches/3.8/src/wp-admin/themes.php

    r27876 r47965  
    255255                echo "
    256256                <tr>
    257                          <td>" . ( $broken_theme->get( 'Name' ) ? $broken_theme->get( 'Name' ) : $broken_theme->get_stylesheet() ) . "</td>
     257                         <td><?php echo $broken_theme->get( 'Name' ) ? $broken_theme->display( 'Name' ) : esc_html( $broken_theme->get_stylesheet() ); ?></td>
    258258                         <td>" . $broken_theme->errors()->get_error_message() . "</td>
    259259                </tr>";
  • branches/3.8/src/wp-includes/pluggable.php

    r46504 r47965  
    927927 **/
    928928function wp_sanitize_redirect($location) {
    929         $location = preg_replace('|[^a-z0-9-~+_.?#=&;,/:%!]|i', '', $location);
     929        $location = preg_replace('|[^a-z0-9-~+_.?#=&;,/:%!@]|i', '', $location);
    930930        $location = wp_kses_no_null($location);
    931931
     
    984984 **/
    985985function wp_validate_redirect($location, $default = '') {
    986         $location = trim( $location, " \t\n\r\0\x08\x0B" );
     986        $location = wp_sanitize_redirect( trim( $location, " \t\n\r\0\x08\x0B" ) );
    987987        // browsers will assume 'http' is your protocol, and will obey a redirect to a URL starting with '//'
    988988        if ( substr($location, 0, 2) == '//' )
  • branches/3.8/tests/phpunit/tests/formatting/redirect.php

    r40193 r47965  
    2727                $this->assertEquals('http://example.com/watchthecarriagereturngo', wp_sanitize_redirect('http://example.com/watchthecarriagereturn%0%0ddgo'));
    2828                $this->assertEquals('http://example.com/watchthecarriagereturngo', wp_sanitize_redirect('http://example.com/watchthecarriagereturn%0%0DDgo'));
     29                $this->assertEquals('http://example.com/@username', wp_sanitize_redirect('http://example.com/@username'));
    2930        }
    3031
Note: See TracChangeset for help on using the changeset viewer.