WordPress.org

Make WordPress Core

Ticket #17445: 17445.patch

File 17445.patch, 3.7 KB (added by hakre, 7 years ago)
  • wp-admin/network/site-settings.php

    ### Eclipse Workspace Patch 1.0
    #P wordpress
     
    111111                        $disabled = false;
    112112                        $class = 'all-options';
    113113                        if ( is_serialized( $option->option_value ) ) {
    114                                 if ( is_serialized_string( $option->option_value ) ) {
    115                                         $option->option_value = esc_html( maybe_unserialize( $option->option_value ), 'single' );
     114                                if ( _is_serialized_test( 's', $option->option_value ) ) {
     115                                        $option->option_value = esc_html( @unserialize( $option->option_value ), 'single' );
    116116                                } else {
    117117                                        $option->option_value = 'SERIALIZED DATA';
    118118                                        $disabled = true;
  • wp-admin/options.php

     
    180180        if ( $option->option_name == '' )
    181181                continue;
    182182        if ( is_serialized( $option->option_value ) ) {
    183                 if ( is_serialized_string( $option->option_value ) ) {
     183                if ( _is_serialized_test( 's', $option->option_value ) ) {
    184184                        // this is a serialized string, so we should display it
    185                         $value = maybe_unserialize( $option->option_value );
     185                        $value = @unserialize( $option->option_value );
    186186                        $options_to_update[] = $option->option_name;
    187187                        $class = 'all-options';
    188188                } else {
  • wp-includes/functions.php

     
    276276}
    277277
    278278/**
     279 * Check whether serialized data is of a format defined by char.
     280 *
     281 * Used internally to prevent running is serialized too much.
     282 *
     283 * @access private
     284 * @param string $char to test for, e.g. 's' for strings.
     285 * @param mixed $data to test
     286 * @param bool $fullcheck (optional) by default, this functions precodnition is, that $data is of such a format that {@see is_serialized()}} has returned true on. Set this parameter to true to perform this precondition check in case not.
     287 * @return bool
     288 */
     289function _is_serialized_test($char, $data, $fullcheck = false) {
     290        if ($fullcheck && !is_serialized($data)) {
     291                return false;
     292        }
     293        return $char === strtolower( $data[ strcspn( $data, 'adObisS:"{};' ) ] );
     294}
     295
     296/**
    279297 * Check whether serialized data is of string type.
    280298 *
    281299 * @since 2.0.5
  • wp-admin/includes/post.php

     
    719719        $meta = $wpdb->get_row( $wpdb->prepare("SELECT * FROM $wpdb->postmeta WHERE meta_id = %d", $mid) );
    720720        if ( empty($meta) )
    721721                return false;
    722         if ( is_serialized_string( $meta->meta_value ) )
    723                 $meta->meta_value = maybe_unserialize( $meta->meta_value );
     722        if ( _is_serialized_test( 's', $meta->meta_value, true ) )
     723                $meta->meta_value = @unserialize( $meta->meta_value );
    724724        return $meta;
    725725}
    726726
  • wp-admin/includes/template.php

     
    478478                $style .= ' hidden';
    479479
    480480        if ( is_serialized( $entry['meta_value'] ) ) {
    481                 if ( is_serialized_string( $entry['meta_value'] ) ) {
     481                if ( _is_serialized_test( 's', $entry['meta_value'] ) ) {
    482482                        // this is a serialized string, so we should display it
    483                         $entry['meta_value'] = maybe_unserialize( $entry['meta_value'] );
     483                        $entry['meta_value'] = @unserialize( $entry['meta_value'] );
    484484                } else {
    485485                        // this is a serialized array/object so we should NOT display it
    486486                        --$count;