@@ -2132,11 +2132,9 @@ function wp_generate_password( $length = 12, $special_chars = true, $extra_speci
21322132 * Generates a random number
21332133 *
21342134 * @since 2.6.2
2135- * @since 4.4 Uses PHP7 random_int() or the random_compat library if avaialble.
21362135 *
21372136 * @global string $rnd_value
21382137 * @staticvar string $seed
2139- * @staticvar bool $external_rand_source_available
21402138 *
21412139 * @param int $min Lower limit for the generated number
21422140 * @param int $max Upper limit for the generated number
@@ -2145,34 +2143,6 @@ function wp_generate_password( $length = 12, $special_chars = true, $extra_speci
21452143function wp_rand ( $ min = 0 , $ max = 0 ) {
21462144 global $ rnd_value ;
21472145
2148- // Some misconfigured 32bit environments (Entropy PHP, for example) truncate integers larger than PHP_INT_MAX to PHP_INT_MAX rather than overflowing them to floats.
2149- $ max_random_number = 3000000000 === 2147483647 ? (float ) "4294967295 " : 4294967295 ; // 4294967295 = 0xffffffff
2150-
2151- // We only handle Ints, floats are truncated to their integer value.
2152- $ min = (int ) $ min ;
2153- $ max = (int ) $ max ;
2154-
2155- // Use PHP's CSPRNG, or a compatible method
2156- static $ use_random_int_functionality = true ;
2157- if ( $ use_random_int_functionality ) {
2158- try {
2159- $ _max = ( 0 != $ max ) ? $ max : $ max_random_number ;
2160- // wp_rand() can accept arguements in either order, PHP cannot.
2161- $ _max = max ( $ min , $ _max );
2162- $ _min = min ( $ min , $ _max );
2163- $ val = random_int ( $ _min , $ _max );
2164- if ( false !== $ val ) {
2165- return absint ( $ val );
2166- } else {
2167- $ use_random_int_functionality = false ;
2168- }
2169- } catch ( Throwable $ t ) {
2170- $ use_random_int_functionality = false ;
2171- } catch ( Exception $ e ) {
2172- $ use_random_int_functionality = false ;
2173- }
2174- }
2175-
21762146 // Reset $rnd_value after 14 uses
21772147 // 32(md5) + 40(sha1) + 40(sha1) / 8 = 14 random numbers from $rnd_value
21782148 if ( strlen ($ rnd_value ) < 8 ) {
@@ -2197,6 +2167,9 @@ function wp_rand( $min = 0, $max = 0 ) {
21972167
21982168 $ value = abs (hexdec ($ value ));
21992169
2170+ // Some misconfigured 32bit environments (Entropy PHP, for example) truncate integers larger than PHP_INT_MAX to PHP_INT_MAX rather than overflowing them to floats.
2171+ $ max_random_number = 3000000000 === 2147483647 ? (float ) "4294967295 " : 4294967295 ; // 4294967295 = 0xffffffff
2172+
22002173 // Reduce the value to be within the min - max range
22012174 if ( $ max != 0 )
22022175 $ value = $ min + ( $ max - $ min + 1 ) * $ value / ( $ max_random_number + 1 );
0 commit comments