From 00ea756c939e8f0b3d7f2cbd9059c0373481f73a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20D=C3=BCsterhus?= Date: Sun, 14 Jan 2024 13:05:44 +0100 Subject: [PATCH] random/standard: Adjust #13138 for PHP 8.3 --- .../tests/03_randomizer/engine_unsafe_nul.phpt | 14 ++++++++++++++ ext/standard/array.c | 5 ++--- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/ext/random/tests/03_randomizer/engine_unsafe_nul.phpt b/ext/random/tests/03_randomizer/engine_unsafe_nul.phpt index 9320ae1af8f..ff53b83b207 100644 --- a/ext/random/tests/03_randomizer/engine_unsafe_nul.phpt +++ b/ext/random/tests/03_randomizer/engine_unsafe_nul.phpt @@ -61,6 +61,18 @@ try { echo $e->getMessage(), PHP_EOL; } +try { + var_dump(randomizer()->getBytesFromString('123', 10)); +} catch (Random\BrokenRandomEngineError $e) { + echo $e->getMessage(), PHP_EOL; +} + +try { + var_dump(randomizer()->getBytesFromString(str_repeat('a', 500), 10)); +} catch (Random\BrokenRandomEngineError $e) { + echo $e->getMessage(), PHP_EOL; +} + ?> --EXPECTF-- int(0) @@ -320,3 +332,5 @@ array(1) { } Failed to generate an acceptable random number in 50 attempts string(6) "oobarf" +string(10) "1111111111" +string(10) "aaaaaaaaaa" diff --git a/ext/standard/array.c b/ext/standard/array.c index 7a82b936f7d..388b15a0879 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -6179,10 +6179,9 @@ PHPAPI bool php_array_pick_keys(const php_random_algo *algo, php_random_status * goto fail; } if (zend_bitset_in(bitset, randval)) { - /* Use PHP_RANDOM_RANGE_ATTEMPTS instead of the hardcoded 50 for 8.3+. */ - if (++failures > 50) { + if (++failures > PHP_RANDOM_RANGE_ATTEMPTS) { if (!silent) { - zend_throw_error(random_ce_Random_BrokenRandomEngineError, "Failed to generate an acceptable random number in %d attempts", 50); + zend_throw_error(random_ce_Random_BrokenRandomEngineError, "Failed to generate an acceptable random number in %d attempts", PHP_RANDOM_RANGE_ATTEMPTS); } goto fail;