Make WordPress Core

Ticket #55194: 55194.diff

File 55194.diff, 2.2 KB (added by SergeyBiryukov, 3 years ago)
  • src/wp-includes/pluggable.php

     
    25332533         *
    25342534         * @global string $rnd_value
    25352535         *
    2536          * @param int $min Lower limit for the generated number
    2537          * @param int $max Upper limit for the generated number
    2538          * @return int A random number between min and max
     2536         * @param int $min Optional. Lower limit for the generated number.
     2537         *                 Accepts positive integers or zero. Defaults to 0.
     2538         * @param int $max Optional. Upper limit for the generated number.
     2539         *                 Accepts positive integers. Defaults to 4294967295.
     2540         * @return int A random number between min and max.
    25392541         */
    2540         function wp_rand( $min = 0, $max = 0 ) {
     2542        function wp_rand( $min = null, $max = null ) {
    25412543                global $rnd_value;
    25422544
    25432545                // Some misconfigured 32-bit environments (Entropy PHP, for example)
     
    25442546                // truncate integers larger than PHP_INT_MAX to PHP_INT_MAX rather than overflowing them to floats.
    25452547                $max_random_number = 3000000000 === 2147483647 ? (float) '4294967295' : 4294967295; // 4294967295 = 0xffffffff
    25462548
     2549                if ( null === $min ) {
     2550                        $min = 0;
     2551                }
     2552
     2553                if ( null === $max ) {
     2554                        $max = $max_random_number;
     2555                }
     2556
    25472557                // We only handle ints, floats are truncated to their integer value.
    25482558                $min = (int) $min;
    25492559                $max = (int) $max;
     
    25522562                static $use_random_int_functionality = true;
    25532563                if ( $use_random_int_functionality ) {
    25542564                        try {
    2555                                 $_max = ( 0 != $max ) ? $max : $max_random_number;
    25562565                                // wp_rand() can accept arguments in either order, PHP cannot.
    2557                                 $_max = max( $min, $_max );
    2558                                 $_min = min( $min, $_max );
     2566                                $_max = max( $min, $max );
     2567                                $_min = min( $min, $max );
    25592568                                $val  = random_int( $_min, $_max );
    25602569                                if ( false !== $val ) {
    25612570                                        return absint( $val );
     
    25952604                $value = abs( hexdec( $value ) );
    25962605
    25972606                // Reduce the value to be within the min - max range.
    2598                 if ( 0 != $max ) {
    2599                         $value = $min + ( $max - $min + 1 ) * $value / ( $max_random_number + 1 );
    2600                 }
     2607                $value = $min + ( $max - $min + 1 ) * $value / ( $max_random_number + 1 );
    26012608
    26022609                return abs( (int) $value );
    26032610        }