WordPress.org

Make WordPress Core

Ticket #14429: 14429.patch

File 14429.patch, 1.4 KB (added by hakre, 4 years ago)

no need for strpbrk checks

  • wp-includes/functions.php

     
    229229 */ 
    230230function is_serialized( $data ) { 
    231231        // if it isn't a string, it isn't serialized 
    232         if ( !is_string( $data ) ) 
     232        if ( !is_string( $data ) ) { 
    233233                return false; 
     234        } 
     235 
    234236        $data = trim( $data ); 
    235         if ( 'N;' == $data ) 
     237 
     238        if ( 'N;' === $data ) { 
    236239                return true; 
    237         if ( function_exists('strpbrk') ) { 
    238                 if ( strlen($data) > 1 && strpbrk($data,'adObis') == $data && $data[1] == ':' ) { 
    239                         $badions = array(); 
    240                         $badions[1] = $data[0]; 
    241                 } else { 
    242                         return false; 
    243                 } 
    244         } elseif ( !preg_match( '/^([adObis]):/', $data, $badions ) ) { 
     240        } 
     241 
     242        $has_token = ( 
     243                strlen( $data ) > 3  
     244                && ':' === $data[1] 
     245                && ( $token = $data[0] ) 
     246                && false !== strpos('adObis', $token) 
     247        ); 
     248 
     249        if ( !$has_token ) { 
    245250                return false; 
    246251        } 
    247         switch ( $badions[1] ) { 
     252 
     253        switch ( $token ) { 
    248254                case 'a' : 
    249255                case 'O' : 
    250256                case 's' : 
    251                         if ( preg_match( "/^{$badions[1]}:[0-9]+:.*[;}]\$/s", $data ) ) 
     257                        if ( preg_match( "/^{$token}:[0-9]+:.*[;}]\$/s", $data ) ) { 
    252258                                return true; 
     259                        } 
    253260                        break; 
    254261                case 'b' : 
    255262                case 'i' : 
    256263                case 'd' : 
    257                         if ( preg_match( "/^{$badions[1]}:[0-9.E-]+;\$/", $data ) ) 
     264                        if ( preg_match( "/^{$token}:[0-9.E-]+;\$/", $data ) ) { 
    258265                                return true; 
     266                        } 
    259267                        break; 
    260268        } 
    261269        return false;