Changeset 34922
- Timestamp:
- 10/08/2015 12:01:26 AM (9 years ago)
- Location:
- trunk/src/wp-includes
- Files:
-
- 9 added
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/compat.php
r34845 r34922 333 333 } 334 334 } 335 336 // random_int was introduced in PHP 7.0 337 if ( ! function_exists( 'random_int' ) ) { 338 require ABSPATH . WPINC . '/random_compat/random.php'; 339 } -
trunk/src/wp-includes/pluggable.php
r34912 r34922 2133 2133 * 2134 2134 * @since 2.6.2 2135 * @since 4.4 Uses PHP7 random_int() or the random_compat library if avaialble. 2135 2136 * 2136 2137 * @global string $rnd_value 2137 2138 * @staticvar string $seed 2139 * @staticvar bool $external_rand_source_available 2138 2140 * 2139 2141 * @param int $min Lower limit for the generated number … … 2143 2145 function wp_rand( $min = 0, $max = 0 ) { 2144 2146 global $rnd_value; 2147 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 } 2145 2175 2146 2176 // Reset $rnd_value after 14 uses … … 2167 2197 2168 2198 $value = abs(hexdec($value)); 2169 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 = 0xffffffff2172 2199 2173 2200 // Reduce the value to be within the min - max range
Note: See TracChangeset
for help on using the changeset viewer.