123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- --TEST--
- Bug #80560: Strings containing only a base prefix return 0 object
- --EXTENSIONS--
- gmp
- --FILE--
- <?php
- $functions1 = [
- 'gmp_init',
- 'gmp_export',
- 'gmp_intval',
- 'gmp_strval',
- 'gmp_neg',
- 'gmp_abs',
- 'gmp_fact',
- 'gmp_sqrt',
- 'gmp_sqrtrem',
- 'gmp_perfect_square',
- 'gmp_perfect_power',
- 'gmp_prob_prime',
- 'gmp_sign',
- 'gmp_random_seed',
- 'gmp_popcount',
- 'gmp_com',
- 'gmp_nextprime',
- ];
- $functions1_need_int_2 = [
- 'gmp_testbit',
- 'gmp_scan0',
- 'gmp_scan1',
- 'gmp_binomial',
- 'gmp_root',
- 'gmp_rootrem',
- 'gmp_pow',
- ];
- $functions2 = [
- 'gmp_add',
- 'gmp_sub',
- 'gmp_mul',
- 'gmp_div',
- 'gmp_div_q',
- 'gmp_div_r',
- 'gmp_div_qr',
- 'gmp_divexact',
- 'gmp_mod',
- 'gmp_gcd',
- 'gmp_gcdext',
- 'gmp_lcm',
- 'gmp_invert',
- 'gmp_jacobi',
- 'gmp_legendre',
- 'gmp_kronecker',
- 'gmp_cmp',
- 'gmp_random_range',
- 'gmp_and',
- 'gmp_or',
- 'gmp_xor',
- 'gmp_hamdist',
- ];
- $functions3 = [
- 'gmp_powm',
- ];
- echo 'Explicit base with gmp_init:', \PHP_EOL;
- echo 'Hexadecimal', \PHP_EOL;
- try {
- var_dump(gmp_init('0X', 16));
- } catch (\ValueError $e) {
- echo $e->getMessage(), \PHP_EOL;
- }
- try {
- var_dump(gmp_init('0x', 16));
- } catch (\ValueError $e) {
- echo $e->getMessage(), \PHP_EOL;
- }
- echo 'Binary', \PHP_EOL;
- try {
- var_dump(gmp_init('0B', 2));
- } catch (\ValueError $e) {
- echo $e->getMessage(), \PHP_EOL;
- }
- try {
- var_dump(gmp_init('0b', 2));
- } catch (\ValueError $e) {
- echo $e->getMessage(), \PHP_EOL;
- }
- echo 'Fuzzing gmp functions:', \PHP_EOL;
- foreach ($functions1 as $function) {
- try {
- $function('0B');
- echo $function, ' failed with 0B', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function('0b');
- echo $function, ' failed with 0b', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function('0X');
- echo $function, ' failed with 0X', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function('0x');
- echo $function, ' failed with 0x', \PHP_EOL;
- } catch (\ValueError) { }
- }
- foreach ($functions1_need_int_2 as $function) {
- try {
- $function('0B', 1);
- echo $function, ' failed with 0B', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function('0b', 1);
- echo $function, ' failed with 0b', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function('0X', 1);
- echo $function, ' failed with 0X', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function('0x', 1);
- echo $function, ' failed with 0x', \PHP_EOL;
- } catch (\ValueError) { }
- }
- foreach ($functions2 as $function) {
- try {
- $function('0B', 1);
- echo $function, ' arg 1 failed with 0B', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function('0b', 1);
- echo $function, ' arg 1 failed with 0b', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function('0X', 1);
- echo $function, ' arg 1 failed with 0X', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function('0x', 1);
- echo $function, ' arg 1 failed with 0x', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function(1, '0B');
- echo $function, ' arg 2 failed with 0B', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function(1, '0b');
- echo $function, ' arg 2 failed with 0b', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function(1, '0X');
- echo $function, ' arg 2 failed with 0X', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function(1, '0x');
- echo $function, ' arg 2 failed with 0x', \PHP_EOL;
- } catch (\ValueError) { }
- }
- foreach ($functions3 as $function) {
- try {
- $function('0B', 1, 1);
- echo $function, ' arg 1 failed with 0B', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function('0b', 1, 1);
- echo $function, ' arg 1 failed with 0b', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function('0X', 1, 1);
- echo $function, ' arg 1 failed with 0X', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function('0x', 1, 1);
- echo $function, ' arg 1 failed with 0x', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function(1, '0B', 1);
- echo $function, ' arg 2 failed with 0B', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function(1, '0b', 1);
- echo $function, ' arg 2 failed with 0b', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function(1, '0X', 1);
- echo $function, ' arg 2 failed with 0X', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function(1, '0x', 1);
- echo $function, ' arg 2 failed with 0x', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function(1, 1, '0B');
- echo $function, ' arg 3 failed with 0B', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function(1, 1, '0b');
- echo $function, ' arg 3 failed with 0b', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function(1, 1, '0X');
- echo $function, ' arg 3 failed with 0X', \PHP_EOL;
- } catch (\ValueError) { }
- try {
- $function(1, 1, '0x');
- echo $function, ' arg 3 failed with 0x', \PHP_EOL;
- } catch (\ValueError) { }
- }
- echo "Done\n";
- ?>
- --EXPECT--
- Explicit base with gmp_init:
- Hexadecimal
- gmp_init(): Argument #1 ($num) is not an integer string
- gmp_init(): Argument #1 ($num) is not an integer string
- Binary
- gmp_init(): Argument #1 ($num) is not an integer string
- gmp_init(): Argument #1 ($num) is not an integer string
- Fuzzing gmp functions:
- Done
|