WordPress.org

Make WordPress Core

Ticket #18007: 18007.3.patch

File 18007.3.patch, 1.9 KB (added by SergeyBiryukov, 3 years ago)
  • wp-includes/functions.php

     
    245245 * @return bool False if not serialized and true if it was. 
    246246 */ 
    247247function is_serialized( $data ) { 
     248        static $is_overloaded; 
     249 
     250        if ( ! isset( $is_overloaded ) ) 
     251                $is_overloaded = ( ( ini_get( 'mbstring.func_overload' ) & 2 ) != 0 ) && function_exists( 'mb_substr' ); 
     252 
    248253        // if it isn't a string, it isn't serialized 
    249254        if ( ! is_string( $data ) ) 
    250255                return false; 
     
    256261                return false; 
    257262        if ( ':' !== $data[1] ) 
    258263                return false; 
    259         $lastc = $data[$length-1]; 
     264        $lastc = ( $is_overloaded ) ? substr( $data, -1 ) : $data[ $length - 1 ]; 
    260265        if ( ';' !== $lastc && '}' !== $lastc ) 
    261266                return false; 
    262267        $token = $data[0]; 
    263268        switch ( $token ) { 
    264269                case 's' : 
    265                         if ( '"' !== $data[$length-2] ) 
     270                        if ( '"' !== ( ( $is_overloaded ) ? substr( $data, -2, 1 ) : $data[ $length - 2 ] ) ) 
    266271                                return false; 
    267272                case 'a' : 
    268273                case 'O' : 
     
    284289 * @return bool False if not a serialized string, true if it is. 
    285290 */ 
    286291function is_serialized_string( $data ) { 
     292        static $is_overloaded; 
     293 
     294        if ( ! isset( $is_overloaded ) ) 
     295                $is_overloaded = ( ( ini_get( 'mbstring.func_overload' ) & 2 ) != 0 ) && function_exists( 'mb_substr' ); 
     296 
    287297        // if it isn't a string, it isn't a serialized string 
    288298        if ( !is_string( $data ) ) 
    289299                return false; 
     
    293303                return false; 
    294304        elseif ( ':' !== $data[1] ) 
    295305                return false; 
    296         elseif ( ';' !== $data[$length-1] ) 
     306        elseif ( ';' !== ( ( $is_overloaded ) ? substr( $data, -1 ) : $data[ $length - 1 ] ) ) 
    297307                return false; 
    298308        elseif ( $data[0] !== 's' ) 
    299309                return false; 
    300         elseif ( '"' !== $data[$length-2] ) 
     310        elseif ( '"' !== ( ( $is_overloaded ) ? substr( $data, -2, 1 ) : $data[ $length - 2 ] ) ) 
    301311                return false; 
    302312        else 
    303313                return true;