1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
|
--TEST--
Test zend_ini_parse_uquantity() overflow handling
--EXTENSIONS--
zend_test
--FILE--
<?php
$tests = [
'No overflow 001' => '0',
'No overflow 002' => '1',
'No overflow 003' => '100',
'No overflow 004' => strval(PHP_INT_MAX),
'No overflow 005' => '2K',
'No overflow 006' => '-1',
'No overflow 007' => ' -1',
'No overflow 008' => '-1 ',
'No overflow 009' => ' -1 ',
'Subject overflow 001' => base_convert(str_repeat('1', PHP_INT_SIZE*8+1), 2, 10),
'Subject overflow 002' => '-'.base_convert(str_repeat('1', PHP_INT_SIZE*8+1), 2, 10),
'Subject overflow 003' => strval(PHP_INT_MIN),
'Subject overflow 004' => '-2',
'Subject overflow 005' => '-1K',
'Subject overflow 006' => '-1 K',
'Multiplier overflow 001' => strval(PHP_INT_MAX).'K',
];
foreach ($tests as $name => $value) {
printf("# %s: \"%s\"\n", $name, $value);
printf("%u\n", zend_test_zend_ini_parse_uquantity($value));
print "\n";
print "----------\n";
}
printf("# zend_test_zend_ini_parse_uquantity(\"-1\") === -1\n");
var_dump(zend_test_zend_ini_parse_uquantity("-1") === -1);
?>
--EXPECTF--
# No overflow 001: "0"
0
----------
# No overflow 002: "1"
1
----------
# No overflow 003: "100"
100
----------
# No overflow 004: "%d"
%d
----------
# No overflow 005: "2K"
2048
----------
# No overflow 006: "-1"
%d
----------
# No overflow 007: " -1"
%d
----------
# No overflow 008: "-1 "
%d
----------
# No overflow 009: " -1 "
%d
----------
# Subject overflow 001: "%d"
Warning: Invalid quantity "%d": value is out of range, using overflow result for backwards compatibility in %s on line %d
%d
----------
# Subject overflow 002: "-%d"
Warning: Invalid quantity "-%d": value is out of range, using overflow result for backwards compatibility in %s on line %d
%d
----------
# Subject overflow 003: "-%d"
Warning: Invalid quantity "-%d": value is out of range, using overflow result for backwards compatibility in %s on line %d
%d
----------
# Subject overflow 004: "-2"
Warning: Invalid quantity "-2": value is out of range, using overflow result for backwards compatibility in %s on line %d
%d
----------
# Subject overflow 005: "-1K"
Warning: Invalid quantity "-1K": value is out of range, using overflow result for backwards compatibility in %s on line %d
%d
----------
# Subject overflow 006: "-1 K"
Warning: Invalid quantity "-1 K": value is out of range, using overflow result for backwards compatibility in %s on line %d
%d
----------
# Multiplier overflow 001: "%dK"
Warning: Invalid quantity "%dK": value is out of range, using overflow result for backwards compatibility in %s on line %d
%d
----------
# zend_test_zend_ini_parse_uquantity("-1") === -1
bool(true)
|