diff options
author | Andrey Andreev <narf@devilix.net> | 2016-02-09 22:35:08 +0100 |
---|---|---|
committer | Andrey Andreev <narf@devilix.net> | 2016-02-09 22:35:08 +0100 |
commit | 477e08f1d6726809660e4841f389493541f7bc07 (patch) | |
tree | 785b12b53c5e46e317def1768558f33445ab2b1f /system/helpers/captcha_helper.php | |
parent | 2342256c076502cbaca86fcff2a1dbbfc49a1900 (diff) | |
parent | 39967987ebcc79fc867c1f7fa8d69cc65801f594 (diff) |
Merge branch '3.0-stable' into develop
Fixed conflicts:
user_guide_src/source/overview/at_a_glance.rst
Diffstat (limited to 'system/helpers/captcha_helper.php')
-rw-r--r-- | system/helpers/captcha_helper.php | 45 |
1 files changed, 23 insertions, 22 deletions
diff --git a/system/helpers/captcha_helper.php b/system/helpers/captcha_helper.php index fd1b8f1ed..3c1e006f8 100644 --- a/system/helpers/captcha_helper.php +++ b/system/helpers/captcha_helper.php @@ -171,35 +171,36 @@ if ( ! function_exists('create_captcha')) $byte_index = $word_index = 0; while ($word_index < $word_length) { - list(, $rand_index) = unpack('C', $bytes[$byte_index++]); - if ($rand_index > $rand_max) + // Do we have more random data to use? + // It could be exhausted by previous iterations + // ignoring bytes higher than $rand_max. + if ($byte_index === $pool_length) { - // Was this the last byte we have? - // If so, try to fetch more. - if ($byte_index === $pool_length) + // No failures should be possible if the + // first get_random_bytes() call didn't + // return FALSE, but still ... + for ($i = 0; $i < 5; $i++) { - // No failures should be possible if - // the first get_random_bytes() call - // didn't return FALSE, but still ... - for ($i = 0; $i < 5; $i++) + if (($bytes = $security->get_random_bytes($pool_length)) === FALSE) { - if (($bytes = $security->get_random_bytes($pool_length)) === FALSE) - { - continue; - } - - $byte_index = 0; - break; + continue; } - if ($bytes === FALSE) - { - // Sadly, this means fallback to mt_rand() - $word = ''; - break; - } + $byte_index = 0; + break; + } + + if ($bytes === FALSE) + { + // Sadly, this means fallback to mt_rand() + $word = ''; + break; } + } + list(, $rand_index) = unpack('C', $bytes[$byte_index++]); + if ($rand_index > $rand_max) + { continue; } |