WordPress.org

Make WordPress Core

Ticket #18007: 18007.3.patch

File 18007.3.patch, 1.9 KB (added by SergeyBiryukov, 6 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;