diff --git a/ext/random/random.c b/ext/random/random.c index f34d55f340727..aeddb438caf08 100644 --- a/ext/random/random.c +++ b/ext/random/random.c @@ -574,8 +574,8 @@ PHP_FUNCTION(random_bytes) Z_PARAM_LONG(size) ZEND_PARSE_PARAMETERS_END(); - if (size < 1) { - zend_argument_value_error(1, "must be greater than 0"); + if (size < 0) { + zend_argument_value_error(1, "must be greater than or equal to 0"); RETURN_THROWS(); } diff --git a/ext/random/randomizer.c b/ext/random/randomizer.c index fe9ad5fc35a9c..a00648b79558b 100644 --- a/ext/random/randomizer.c +++ b/ext/random/randomizer.c @@ -278,8 +278,8 @@ PHP_METHOD(Random_Randomizer, getBytes) Z_PARAM_LONG(length) ZEND_PARSE_PARAMETERS_END(); - if (length < 1) { - zend_argument_value_error(1, "must be greater than 0"); + if (length < 0) { + zend_argument_value_error(1, "must be greater than or equal to 0"); RETURN_THROWS(); } @@ -395,8 +395,8 @@ PHP_METHOD(Random_Randomizer, getBytesFromString) RETURN_THROWS(); } - if (length < 1) { - zend_argument_value_error(2, "must be greater than 0"); + if (length < 0) { + zend_argument_value_error(2, "must be greater than or equal to 0"); RETURN_THROWS(); } diff --git a/ext/random/tests/01_functions/random_bytes.phpt b/ext/random/tests/01_functions/random_bytes.phpt index 6a7d438835f95..cb68e167e32bd 100644 --- a/ext/random/tests/01_functions/random_bytes.phpt +++ b/ext/random/tests/01_functions/random_bytes.phpt @@ -4,6 +4,8 @@ Test normal operation of random_bytes() --EXPECT-- +int(0) int(32) bool(true) bool(true) diff --git a/ext/random/tests/01_functions/random_bytes_error.phpt b/ext/random/tests/01_functions/random_bytes_error.phpt index bc0c1ccc20489..cf9a2a7af0905 100644 --- a/ext/random/tests/01_functions/random_bytes_error.phpt +++ b/ext/random/tests/01_functions/random_bytes_error.phpt @@ -11,7 +11,7 @@ try { } try { - $bytes = random_bytes(0); + $bytes = random_bytes(-1); } catch (Error $e) { echo $e->getMessage().PHP_EOL; } @@ -19,4 +19,4 @@ try { ?> --EXPECT-- random_bytes() expects exactly 1 argument, 0 given -random_bytes(): Argument #1 ($length) must be greater than 0 +random_bytes(): Argument #1 ($length) must be greater than or equal to 0 diff --git a/ext/random/tests/03_randomizer/methods/getBytes.phpt b/ext/random/tests/03_randomizer/methods/getBytes.phpt index 70aca6e22f8b6..7eae976d0ed87 100644 --- a/ext/random/tests/03_randomizer/methods/getBytes.phpt +++ b/ext/random/tests/03_randomizer/methods/getBytes.phpt @@ -28,7 +28,7 @@ foreach ($engines as $engine) { $randomizer = new Randomizer($engine); - for ($i = 1; $i < $iterations; $i++) { + for ($i = 0; $i < $iterations; $i++) { if (\strlen($randomizer->getBytes($i)) !== $i) { die("failure: incorrect string length at {$i}"); } diff --git a/ext/random/tests/03_randomizer/methods/getBytesFromString.phpt b/ext/random/tests/03_randomizer/methods/getBytesFromString.phpt index 06d24cc82bd23..b2734d03b6dd0 100644 --- a/ext/random/tests/03_randomizer/methods/getBytesFromString.phpt +++ b/ext/random/tests/03_randomizer/methods/getBytesFromString.phpt @@ -28,6 +28,7 @@ foreach ($engines as $engine) { $randomizer = new Randomizer($engine); var_dump($randomizer->getBytesFromString('a', 10)); var_dump($randomizer->getBytesFromString(str_repeat('a', 256), 5)); + var_dump($randomizer->getBytesFromString('a', 0)); for ($i = 1; $i < $iterations; $i++) { $output = $randomizer->getBytesFromString(str_repeat('ab', $i), 500); @@ -49,19 +50,25 @@ Deprecated: The MT_RAND_PHP variant of Mt19937 is deprecated in %s on line %d Random\Engine\Mt19937 string(10) "aaaaaaaaaa" string(5) "aaaaa" +string(0) "" Random\Engine\Mt19937 string(10) "aaaaaaaaaa" string(5) "aaaaa" +string(0) "" Random\Engine\PcgOneseq128XslRr64 string(10) "aaaaaaaaaa" string(5) "aaaaa" +string(0) "" Random\Engine\Xoshiro256StarStar string(10) "aaaaaaaaaa" string(5) "aaaaa" +string(0) "" Random\Engine\Secure string(10) "aaaaaaaaaa" string(5) "aaaaa" +string(0) "" Random\Engine\Test\TestShaEngine string(10) "aaaaaaaaaa" string(5) "aaaaa" +string(0) "" success diff --git a/ext/random/tests/03_randomizer/methods/getBytesFromString_error.phpt b/ext/random/tests/03_randomizer/methods/getBytesFromString_error.phpt index 7280949d647e8..566d3b56be58c 100644 --- a/ext/random/tests/03_randomizer/methods/getBytesFromString_error.phpt +++ b/ext/random/tests/03_randomizer/methods/getBytesFromString_error.phpt @@ -17,12 +17,12 @@ try { } try { - var_dump(randomizer()->getBytesFromString("abc", 0)); + var_dump(randomizer()->getBytesFromString("abc", -1)); } catch (ValueError $e) { echo $e->getMessage(), PHP_EOL; } ?> ---EXPECTF-- +--EXPECT-- Random\Randomizer::getBytesFromString(): Argument #1 ($string) cannot be empty -Random\Randomizer::getBytesFromString(): Argument #2 ($length) must be greater than 0 +Random\Randomizer::getBytesFromString(): Argument #2 ($length) must be greater than or equal to 0