We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
Randomizer::getBytesFromString()
1 parent 68ae477 commit 1fc2ddcCopy full SHA for 1fc2ddc
ext/random/randomizer.c
@@ -431,6 +431,8 @@ PHP_METHOD(Random_Randomizer, getBytesFromString)
431
mask |= mask >> 1;
432
mask |= mask >> 2;
433
mask |= mask >> 4;
434
+ // Expand the lowest byte into all bytes.
435
+ mask *= 0x0101010101010101;
436
437
int failures = 0;
438
while (total_size < length) {
@@ -440,8 +442,10 @@ PHP_METHOD(Random_Randomizer, getBytesFromString)
440
442
RETURN_THROWS();
441
443
}
444
445
+ uint64_t offsets = result.result & mask;
446
for (size_t i = 0; i < result.size; i++) {
- uint64_t offset = (result.result >> (i * 8)) & mask;
447
+ uint64_t offset = offsets & 0xff;
448
+ offsets >>= 8;
449
450
if (offset > max_offset) {
451
if (++failures > PHP_RANDOM_RANGE_ATTEMPTS) {
0 commit comments