mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Add support for binary and octal number prefixes for INI settings
Closes GH-9560
This commit is contained in:
750
Zend/tests/zend_ini/zend_ini_parse_quantity_binary_prefixes.phpt
Normal file
750
Zend/tests/zend_ini/zend_ini_parse_quantity_binary_prefixes.phpt
Normal file
@@ -0,0 +1,750 @@
|
||||
--TEST--
|
||||
Test parsing of binary quantities
|
||||
--EXTENSIONS--
|
||||
zend_test
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
// This test checks valid formats do not throw any warnings.
|
||||
foreach (['', ' '] as $leadingWS) {
|
||||
foreach (['', '+', '-'] as $sign) {
|
||||
foreach (['', ' '] as $midWS) {
|
||||
// Ignore G due to overflow on 32bits
|
||||
foreach (['', 'K', 'k', 'M', 'm'] as $exp) {
|
||||
foreach (['', ' '] as $trailingWS) {
|
||||
$setting = sprintf('%s%s0b11%s%s%s',
|
||||
$leadingWS, $sign, $midWS, $exp, $trailingWS);
|
||||
printf("# \"%s\"\n", $setting);
|
||||
var_dump(zend_test_zend_ini_parse_quantity($setting));
|
||||
print "\n";
|
||||
|
||||
$setting = sprintf('%s%s0B11%s%s%s',
|
||||
$leadingWS, $sign, $midWS, $exp, $trailingWS);
|
||||
printf("# \"%s\"\n", $setting);
|
||||
var_dump(zend_test_zend_ini_parse_quantity($setting));
|
||||
print "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
--EXPECT--
|
||||
# "0b11"
|
||||
int(3)
|
||||
|
||||
# "0B11"
|
||||
int(3)
|
||||
|
||||
# "0b11 "
|
||||
int(3)
|
||||
|
||||
# "0B11 "
|
||||
int(3)
|
||||
|
||||
# "0b11K"
|
||||
int(3072)
|
||||
|
||||
# "0B11K"
|
||||
int(3072)
|
||||
|
||||
# "0b11K "
|
||||
int(3072)
|
||||
|
||||
# "0B11K "
|
||||
int(3072)
|
||||
|
||||
# "0b11k"
|
||||
int(3072)
|
||||
|
||||
# "0B11k"
|
||||
int(3072)
|
||||
|
||||
# "0b11k "
|
||||
int(3072)
|
||||
|
||||
# "0B11k "
|
||||
int(3072)
|
||||
|
||||
# "0b11M"
|
||||
int(3145728)
|
||||
|
||||
# "0B11M"
|
||||
int(3145728)
|
||||
|
||||
# "0b11M "
|
||||
int(3145728)
|
||||
|
||||
# "0B11M "
|
||||
int(3145728)
|
||||
|
||||
# "0b11m"
|
||||
int(3145728)
|
||||
|
||||
# "0B11m"
|
||||
int(3145728)
|
||||
|
||||
# "0b11m "
|
||||
int(3145728)
|
||||
|
||||
# "0B11m "
|
||||
int(3145728)
|
||||
|
||||
# "0b11 "
|
||||
int(3)
|
||||
|
||||
# "0B11 "
|
||||
int(3)
|
||||
|
||||
# "0b11 "
|
||||
int(3)
|
||||
|
||||
# "0B11 "
|
||||
int(3)
|
||||
|
||||
# "0b11 K"
|
||||
int(3072)
|
||||
|
||||
# "0B11 K"
|
||||
int(3072)
|
||||
|
||||
# "0b11 K "
|
||||
int(3072)
|
||||
|
||||
# "0B11 K "
|
||||
int(3072)
|
||||
|
||||
# "0b11 k"
|
||||
int(3072)
|
||||
|
||||
# "0B11 k"
|
||||
int(3072)
|
||||
|
||||
# "0b11 k "
|
||||
int(3072)
|
||||
|
||||
# "0B11 k "
|
||||
int(3072)
|
||||
|
||||
# "0b11 M"
|
||||
int(3145728)
|
||||
|
||||
# "0B11 M"
|
||||
int(3145728)
|
||||
|
||||
# "0b11 M "
|
||||
int(3145728)
|
||||
|
||||
# "0B11 M "
|
||||
int(3145728)
|
||||
|
||||
# "0b11 m"
|
||||
int(3145728)
|
||||
|
||||
# "0B11 m"
|
||||
int(3145728)
|
||||
|
||||
# "0b11 m "
|
||||
int(3145728)
|
||||
|
||||
# "0B11 m "
|
||||
int(3145728)
|
||||
|
||||
# "+0b11"
|
||||
int(3)
|
||||
|
||||
# "+0B11"
|
||||
int(3)
|
||||
|
||||
# "+0b11 "
|
||||
int(3)
|
||||
|
||||
# "+0B11 "
|
||||
int(3)
|
||||
|
||||
# "+0b11K"
|
||||
int(3072)
|
||||
|
||||
# "+0B11K"
|
||||
int(3072)
|
||||
|
||||
# "+0b11K "
|
||||
int(3072)
|
||||
|
||||
# "+0B11K "
|
||||
int(3072)
|
||||
|
||||
# "+0b11k"
|
||||
int(3072)
|
||||
|
||||
# "+0B11k"
|
||||
int(3072)
|
||||
|
||||
# "+0b11k "
|
||||
int(3072)
|
||||
|
||||
# "+0B11k "
|
||||
int(3072)
|
||||
|
||||
# "+0b11M"
|
||||
int(3145728)
|
||||
|
||||
# "+0B11M"
|
||||
int(3145728)
|
||||
|
||||
# "+0b11M "
|
||||
int(3145728)
|
||||
|
||||
# "+0B11M "
|
||||
int(3145728)
|
||||
|
||||
# "+0b11m"
|
||||
int(3145728)
|
||||
|
||||
# "+0B11m"
|
||||
int(3145728)
|
||||
|
||||
# "+0b11m "
|
||||
int(3145728)
|
||||
|
||||
# "+0B11m "
|
||||
int(3145728)
|
||||
|
||||
# "+0b11 "
|
||||
int(3)
|
||||
|
||||
# "+0B11 "
|
||||
int(3)
|
||||
|
||||
# "+0b11 "
|
||||
int(3)
|
||||
|
||||
# "+0B11 "
|
||||
int(3)
|
||||
|
||||
# "+0b11 K"
|
||||
int(3072)
|
||||
|
||||
# "+0B11 K"
|
||||
int(3072)
|
||||
|
||||
# "+0b11 K "
|
||||
int(3072)
|
||||
|
||||
# "+0B11 K "
|
||||
int(3072)
|
||||
|
||||
# "+0b11 k"
|
||||
int(3072)
|
||||
|
||||
# "+0B11 k"
|
||||
int(3072)
|
||||
|
||||
# "+0b11 k "
|
||||
int(3072)
|
||||
|
||||
# "+0B11 k "
|
||||
int(3072)
|
||||
|
||||
# "+0b11 M"
|
||||
int(3145728)
|
||||
|
||||
# "+0B11 M"
|
||||
int(3145728)
|
||||
|
||||
# "+0b11 M "
|
||||
int(3145728)
|
||||
|
||||
# "+0B11 M "
|
||||
int(3145728)
|
||||
|
||||
# "+0b11 m"
|
||||
int(3145728)
|
||||
|
||||
# "+0B11 m"
|
||||
int(3145728)
|
||||
|
||||
# "+0b11 m "
|
||||
int(3145728)
|
||||
|
||||
# "+0B11 m "
|
||||
int(3145728)
|
||||
|
||||
# "-0b11"
|
||||
int(-3)
|
||||
|
||||
# "-0B11"
|
||||
int(-3)
|
||||
|
||||
# "-0b11 "
|
||||
int(-3)
|
||||
|
||||
# "-0B11 "
|
||||
int(-3)
|
||||
|
||||
# "-0b11K"
|
||||
int(-3072)
|
||||
|
||||
# "-0B11K"
|
||||
int(-3072)
|
||||
|
||||
# "-0b11K "
|
||||
int(-3072)
|
||||
|
||||
# "-0B11K "
|
||||
int(-3072)
|
||||
|
||||
# "-0b11k"
|
||||
int(-3072)
|
||||
|
||||
# "-0B11k"
|
||||
int(-3072)
|
||||
|
||||
# "-0b11k "
|
||||
int(-3072)
|
||||
|
||||
# "-0B11k "
|
||||
int(-3072)
|
||||
|
||||
# "-0b11M"
|
||||
int(-3145728)
|
||||
|
||||
# "-0B11M"
|
||||
int(-3145728)
|
||||
|
||||
# "-0b11M "
|
||||
int(-3145728)
|
||||
|
||||
# "-0B11M "
|
||||
int(-3145728)
|
||||
|
||||
# "-0b11m"
|
||||
int(-3145728)
|
||||
|
||||
# "-0B11m"
|
||||
int(-3145728)
|
||||
|
||||
# "-0b11m "
|
||||
int(-3145728)
|
||||
|
||||
# "-0B11m "
|
||||
int(-3145728)
|
||||
|
||||
# "-0b11 "
|
||||
int(-3)
|
||||
|
||||
# "-0B11 "
|
||||
int(-3)
|
||||
|
||||
# "-0b11 "
|
||||
int(-3)
|
||||
|
||||
# "-0B11 "
|
||||
int(-3)
|
||||
|
||||
# "-0b11 K"
|
||||
int(-3072)
|
||||
|
||||
# "-0B11 K"
|
||||
int(-3072)
|
||||
|
||||
# "-0b11 K "
|
||||
int(-3072)
|
||||
|
||||
# "-0B11 K "
|
||||
int(-3072)
|
||||
|
||||
# "-0b11 k"
|
||||
int(-3072)
|
||||
|
||||
# "-0B11 k"
|
||||
int(-3072)
|
||||
|
||||
# "-0b11 k "
|
||||
int(-3072)
|
||||
|
||||
# "-0B11 k "
|
||||
int(-3072)
|
||||
|
||||
# "-0b11 M"
|
||||
int(-3145728)
|
||||
|
||||
# "-0B11 M"
|
||||
int(-3145728)
|
||||
|
||||
# "-0b11 M "
|
||||
int(-3145728)
|
||||
|
||||
# "-0B11 M "
|
||||
int(-3145728)
|
||||
|
||||
# "-0b11 m"
|
||||
int(-3145728)
|
||||
|
||||
# "-0B11 m"
|
||||
int(-3145728)
|
||||
|
||||
# "-0b11 m "
|
||||
int(-3145728)
|
||||
|
||||
# "-0B11 m "
|
||||
int(-3145728)
|
||||
|
||||
# " 0b11"
|
||||
int(3)
|
||||
|
||||
# " 0B11"
|
||||
int(3)
|
||||
|
||||
# " 0b11 "
|
||||
int(3)
|
||||
|
||||
# " 0B11 "
|
||||
int(3)
|
||||
|
||||
# " 0b11K"
|
||||
int(3072)
|
||||
|
||||
# " 0B11K"
|
||||
int(3072)
|
||||
|
||||
# " 0b11K "
|
||||
int(3072)
|
||||
|
||||
# " 0B11K "
|
||||
int(3072)
|
||||
|
||||
# " 0b11k"
|
||||
int(3072)
|
||||
|
||||
# " 0B11k"
|
||||
int(3072)
|
||||
|
||||
# " 0b11k "
|
||||
int(3072)
|
||||
|
||||
# " 0B11k "
|
||||
int(3072)
|
||||
|
||||
# " 0b11M"
|
||||
int(3145728)
|
||||
|
||||
# " 0B11M"
|
||||
int(3145728)
|
||||
|
||||
# " 0b11M "
|
||||
int(3145728)
|
||||
|
||||
# " 0B11M "
|
||||
int(3145728)
|
||||
|
||||
# " 0b11m"
|
||||
int(3145728)
|
||||
|
||||
# " 0B11m"
|
||||
int(3145728)
|
||||
|
||||
# " 0b11m "
|
||||
int(3145728)
|
||||
|
||||
# " 0B11m "
|
||||
int(3145728)
|
||||
|
||||
# " 0b11 "
|
||||
int(3)
|
||||
|
||||
# " 0B11 "
|
||||
int(3)
|
||||
|
||||
# " 0b11 "
|
||||
int(3)
|
||||
|
||||
# " 0B11 "
|
||||
int(3)
|
||||
|
||||
# " 0b11 K"
|
||||
int(3072)
|
||||
|
||||
# " 0B11 K"
|
||||
int(3072)
|
||||
|
||||
# " 0b11 K "
|
||||
int(3072)
|
||||
|
||||
# " 0B11 K "
|
||||
int(3072)
|
||||
|
||||
# " 0b11 k"
|
||||
int(3072)
|
||||
|
||||
# " 0B11 k"
|
||||
int(3072)
|
||||
|
||||
# " 0b11 k "
|
||||
int(3072)
|
||||
|
||||
# " 0B11 k "
|
||||
int(3072)
|
||||
|
||||
# " 0b11 M"
|
||||
int(3145728)
|
||||
|
||||
# " 0B11 M"
|
||||
int(3145728)
|
||||
|
||||
# " 0b11 M "
|
||||
int(3145728)
|
||||
|
||||
# " 0B11 M "
|
||||
int(3145728)
|
||||
|
||||
# " 0b11 m"
|
||||
int(3145728)
|
||||
|
||||
# " 0B11 m"
|
||||
int(3145728)
|
||||
|
||||
# " 0b11 m "
|
||||
int(3145728)
|
||||
|
||||
# " 0B11 m "
|
||||
int(3145728)
|
||||
|
||||
# " +0b11"
|
||||
int(3)
|
||||
|
||||
# " +0B11"
|
||||
int(3)
|
||||
|
||||
# " +0b11 "
|
||||
int(3)
|
||||
|
||||
# " +0B11 "
|
||||
int(3)
|
||||
|
||||
# " +0b11K"
|
||||
int(3072)
|
||||
|
||||
# " +0B11K"
|
||||
int(3072)
|
||||
|
||||
# " +0b11K "
|
||||
int(3072)
|
||||
|
||||
# " +0B11K "
|
||||
int(3072)
|
||||
|
||||
# " +0b11k"
|
||||
int(3072)
|
||||
|
||||
# " +0B11k"
|
||||
int(3072)
|
||||
|
||||
# " +0b11k "
|
||||
int(3072)
|
||||
|
||||
# " +0B11k "
|
||||
int(3072)
|
||||
|
||||
# " +0b11M"
|
||||
int(3145728)
|
||||
|
||||
# " +0B11M"
|
||||
int(3145728)
|
||||
|
||||
# " +0b11M "
|
||||
int(3145728)
|
||||
|
||||
# " +0B11M "
|
||||
int(3145728)
|
||||
|
||||
# " +0b11m"
|
||||
int(3145728)
|
||||
|
||||
# " +0B11m"
|
||||
int(3145728)
|
||||
|
||||
# " +0b11m "
|
||||
int(3145728)
|
||||
|
||||
# " +0B11m "
|
||||
int(3145728)
|
||||
|
||||
# " +0b11 "
|
||||
int(3)
|
||||
|
||||
# " +0B11 "
|
||||
int(3)
|
||||
|
||||
# " +0b11 "
|
||||
int(3)
|
||||
|
||||
# " +0B11 "
|
||||
int(3)
|
||||
|
||||
# " +0b11 K"
|
||||
int(3072)
|
||||
|
||||
# " +0B11 K"
|
||||
int(3072)
|
||||
|
||||
# " +0b11 K "
|
||||
int(3072)
|
||||
|
||||
# " +0B11 K "
|
||||
int(3072)
|
||||
|
||||
# " +0b11 k"
|
||||
int(3072)
|
||||
|
||||
# " +0B11 k"
|
||||
int(3072)
|
||||
|
||||
# " +0b11 k "
|
||||
int(3072)
|
||||
|
||||
# " +0B11 k "
|
||||
int(3072)
|
||||
|
||||
# " +0b11 M"
|
||||
int(3145728)
|
||||
|
||||
# " +0B11 M"
|
||||
int(3145728)
|
||||
|
||||
# " +0b11 M "
|
||||
int(3145728)
|
||||
|
||||
# " +0B11 M "
|
||||
int(3145728)
|
||||
|
||||
# " +0b11 m"
|
||||
int(3145728)
|
||||
|
||||
# " +0B11 m"
|
||||
int(3145728)
|
||||
|
||||
# " +0b11 m "
|
||||
int(3145728)
|
||||
|
||||
# " +0B11 m "
|
||||
int(3145728)
|
||||
|
||||
# " -0b11"
|
||||
int(-3)
|
||||
|
||||
# " -0B11"
|
||||
int(-3)
|
||||
|
||||
# " -0b11 "
|
||||
int(-3)
|
||||
|
||||
# " -0B11 "
|
||||
int(-3)
|
||||
|
||||
# " -0b11K"
|
||||
int(-3072)
|
||||
|
||||
# " -0B11K"
|
||||
int(-3072)
|
||||
|
||||
# " -0b11K "
|
||||
int(-3072)
|
||||
|
||||
# " -0B11K "
|
||||
int(-3072)
|
||||
|
||||
# " -0b11k"
|
||||
int(-3072)
|
||||
|
||||
# " -0B11k"
|
||||
int(-3072)
|
||||
|
||||
# " -0b11k "
|
||||
int(-3072)
|
||||
|
||||
# " -0B11k "
|
||||
int(-3072)
|
||||
|
||||
# " -0b11M"
|
||||
int(-3145728)
|
||||
|
||||
# " -0B11M"
|
||||
int(-3145728)
|
||||
|
||||
# " -0b11M "
|
||||
int(-3145728)
|
||||
|
||||
# " -0B11M "
|
||||
int(-3145728)
|
||||
|
||||
# " -0b11m"
|
||||
int(-3145728)
|
||||
|
||||
# " -0B11m"
|
||||
int(-3145728)
|
||||
|
||||
# " -0b11m "
|
||||
int(-3145728)
|
||||
|
||||
# " -0B11m "
|
||||
int(-3145728)
|
||||
|
||||
# " -0b11 "
|
||||
int(-3)
|
||||
|
||||
# " -0B11 "
|
||||
int(-3)
|
||||
|
||||
# " -0b11 "
|
||||
int(-3)
|
||||
|
||||
# " -0B11 "
|
||||
int(-3)
|
||||
|
||||
# " -0b11 K"
|
||||
int(-3072)
|
||||
|
||||
# " -0B11 K"
|
||||
int(-3072)
|
||||
|
||||
# " -0b11 K "
|
||||
int(-3072)
|
||||
|
||||
# " -0B11 K "
|
||||
int(-3072)
|
||||
|
||||
# " -0b11 k"
|
||||
int(-3072)
|
||||
|
||||
# " -0B11 k"
|
||||
int(-3072)
|
||||
|
||||
# " -0b11 k "
|
||||
int(-3072)
|
||||
|
||||
# " -0B11 k "
|
||||
int(-3072)
|
||||
|
||||
# " -0b11 M"
|
||||
int(-3145728)
|
||||
|
||||
# " -0B11 M"
|
||||
int(-3145728)
|
||||
|
||||
# " -0b11 M "
|
||||
int(-3145728)
|
||||
|
||||
# " -0B11 M "
|
||||
int(-3145728)
|
||||
|
||||
# " -0b11 m"
|
||||
int(-3145728)
|
||||
|
||||
# " -0B11 m"
|
||||
int(-3145728)
|
||||
|
||||
# " -0b11 m "
|
||||
int(-3145728)
|
||||
|
||||
# " -0B11 m "
|
||||
int(-3145728)
|
||||
@@ -13,6 +13,15 @@ $tests = [
|
||||
'1X', # Unknown multiplier.
|
||||
'1.0K', # Non integral digits.
|
||||
|
||||
'0X', # Valid prefix with no value
|
||||
'0Z', # Invalid prefix
|
||||
'0XK', # Valid prefix with no value and multiplier
|
||||
|
||||
'++',
|
||||
'-+',
|
||||
'+ 25',
|
||||
'- 25',
|
||||
|
||||
# Null bytes
|
||||
" 123\x00K",
|
||||
"\x00 123K",
|
||||
@@ -48,6 +57,41 @@ int(1)
|
||||
Warning: Invalid quantity "1.0K", interpreting as "1K" for backwards compatibility in %s%ezend_ini_parse_quantity_error.php on line %d
|
||||
int(1024)
|
||||
|
||||
# "0X"
|
||||
|
||||
Warning: Invalid quantity "0X": no digits after base prefix, interpreting as "0" for backwards compatibility in %s%ezend_ini_parse_quantity_error.php on line %d
|
||||
int(0)
|
||||
|
||||
# "0Z"
|
||||
|
||||
Warning: Invalid prefix "0Z", interpreting as "0" for backwards compatibility in %s%ezend_ini_parse_quantity_error.php on line %d
|
||||
int(0)
|
||||
|
||||
# "0XK"
|
||||
|
||||
Warning: Invalid quantity "0XK": no valid leading digits, interpreting as "0" for backwards compatibility in %s%ezend_ini_parse_quantity_error.php on line %d
|
||||
int(0)
|
||||
|
||||
# "++"
|
||||
|
||||
Warning: Invalid quantity "++": no valid leading digits, interpreting as "0" for backwards compatibility in %s%ezend_ini_parse_quantity_error.php on line %d
|
||||
int(0)
|
||||
|
||||
# "-+"
|
||||
|
||||
Warning: Invalid quantity "-+": no valid leading digits, interpreting as "0" for backwards compatibility in %s%ezend_ini_parse_quantity_error.php on line %d
|
||||
int(0)
|
||||
|
||||
# "+ 25"
|
||||
|
||||
Warning: Invalid quantity "+ 25": no valid leading digits, interpreting as "0" for backwards compatibility in %s%ezend_ini_parse_quantity_error.php on line %d
|
||||
int(0)
|
||||
|
||||
# "- 25"
|
||||
|
||||
Warning: Invalid quantity "- 25": no valid leading digits, interpreting as "0" for backwards compatibility in %s%ezend_ini_parse_quantity_error.php on line %d
|
||||
int(0)
|
||||
|
||||
# " 123\000K"
|
||||
|
||||
Warning: Invalid quantity " 123\x00K", interpreting as " 123K" for backwards compatibility in %s on line %d
|
||||
750
Zend/tests/zend_ini/zend_ini_parse_quantity_hex_prefixes.phpt
Normal file
750
Zend/tests/zend_ini/zend_ini_parse_quantity_hex_prefixes.phpt
Normal file
@@ -0,0 +1,750 @@
|
||||
--TEST--
|
||||
Test parsing of hexadecimal quantities
|
||||
--EXTENSIONS--
|
||||
zend_test
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
// This test checks valid formats do not throw any warnings.
|
||||
foreach (['', ' '] as $leadingWS) {
|
||||
foreach (['', '+', '-'] as $sign) {
|
||||
foreach (['', ' '] as $midWS) {
|
||||
// Ignore G due to overflow on 32bits
|
||||
foreach (['', 'K', 'k', 'M', 'm'] as $exp) {
|
||||
foreach (['', ' '] as $trailingWS) {
|
||||
$setting = sprintf('%s%s0x1F%s%s%s',
|
||||
$leadingWS, $sign, $midWS, $exp, $trailingWS);
|
||||
printf("# \"%s\"\n", $setting);
|
||||
var_dump(zend_test_zend_ini_parse_quantity($setting));
|
||||
print "\n";
|
||||
|
||||
$setting = sprintf('%s%s0X1F%s%s%s',
|
||||
$leadingWS, $sign, $midWS, $exp, $trailingWS);
|
||||
printf("# \"%s\"\n", $setting);
|
||||
var_dump(zend_test_zend_ini_parse_quantity($setting));
|
||||
print "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
--EXPECT--
|
||||
# "0x1F"
|
||||
int(31)
|
||||
|
||||
# "0X1F"
|
||||
int(31)
|
||||
|
||||
# "0x1F "
|
||||
int(31)
|
||||
|
||||
# "0X1F "
|
||||
int(31)
|
||||
|
||||
# "0x1FK"
|
||||
int(31744)
|
||||
|
||||
# "0X1FK"
|
||||
int(31744)
|
||||
|
||||
# "0x1FK "
|
||||
int(31744)
|
||||
|
||||
# "0X1FK "
|
||||
int(31744)
|
||||
|
||||
# "0x1Fk"
|
||||
int(31744)
|
||||
|
||||
# "0X1Fk"
|
||||
int(31744)
|
||||
|
||||
# "0x1Fk "
|
||||
int(31744)
|
||||
|
||||
# "0X1Fk "
|
||||
int(31744)
|
||||
|
||||
# "0x1FM"
|
||||
int(32505856)
|
||||
|
||||
# "0X1FM"
|
||||
int(32505856)
|
||||
|
||||
# "0x1FM "
|
||||
int(32505856)
|
||||
|
||||
# "0X1FM "
|
||||
int(32505856)
|
||||
|
||||
# "0x1Fm"
|
||||
int(32505856)
|
||||
|
||||
# "0X1Fm"
|
||||
int(32505856)
|
||||
|
||||
# "0x1Fm "
|
||||
int(32505856)
|
||||
|
||||
# "0X1Fm "
|
||||
int(32505856)
|
||||
|
||||
# "0x1F "
|
||||
int(31)
|
||||
|
||||
# "0X1F "
|
||||
int(31)
|
||||
|
||||
# "0x1F "
|
||||
int(31)
|
||||
|
||||
# "0X1F "
|
||||
int(31)
|
||||
|
||||
# "0x1F K"
|
||||
int(31744)
|
||||
|
||||
# "0X1F K"
|
||||
int(31744)
|
||||
|
||||
# "0x1F K "
|
||||
int(31744)
|
||||
|
||||
# "0X1F K "
|
||||
int(31744)
|
||||
|
||||
# "0x1F k"
|
||||
int(31744)
|
||||
|
||||
# "0X1F k"
|
||||
int(31744)
|
||||
|
||||
# "0x1F k "
|
||||
int(31744)
|
||||
|
||||
# "0X1F k "
|
||||
int(31744)
|
||||
|
||||
# "0x1F M"
|
||||
int(32505856)
|
||||
|
||||
# "0X1F M"
|
||||
int(32505856)
|
||||
|
||||
# "0x1F M "
|
||||
int(32505856)
|
||||
|
||||
# "0X1F M "
|
||||
int(32505856)
|
||||
|
||||
# "0x1F m"
|
||||
int(32505856)
|
||||
|
||||
# "0X1F m"
|
||||
int(32505856)
|
||||
|
||||
# "0x1F m "
|
||||
int(32505856)
|
||||
|
||||
# "0X1F m "
|
||||
int(32505856)
|
||||
|
||||
# "+0x1F"
|
||||
int(31)
|
||||
|
||||
# "+0X1F"
|
||||
int(31)
|
||||
|
||||
# "+0x1F "
|
||||
int(31)
|
||||
|
||||
# "+0X1F "
|
||||
int(31)
|
||||
|
||||
# "+0x1FK"
|
||||
int(31744)
|
||||
|
||||
# "+0X1FK"
|
||||
int(31744)
|
||||
|
||||
# "+0x1FK "
|
||||
int(31744)
|
||||
|
||||
# "+0X1FK "
|
||||
int(31744)
|
||||
|
||||
# "+0x1Fk"
|
||||
int(31744)
|
||||
|
||||
# "+0X1Fk"
|
||||
int(31744)
|
||||
|
||||
# "+0x1Fk "
|
||||
int(31744)
|
||||
|
||||
# "+0X1Fk "
|
||||
int(31744)
|
||||
|
||||
# "+0x1FM"
|
||||
int(32505856)
|
||||
|
||||
# "+0X1FM"
|
||||
int(32505856)
|
||||
|
||||
# "+0x1FM "
|
||||
int(32505856)
|
||||
|
||||
# "+0X1FM "
|
||||
int(32505856)
|
||||
|
||||
# "+0x1Fm"
|
||||
int(32505856)
|
||||
|
||||
# "+0X1Fm"
|
||||
int(32505856)
|
||||
|
||||
# "+0x1Fm "
|
||||
int(32505856)
|
||||
|
||||
# "+0X1Fm "
|
||||
int(32505856)
|
||||
|
||||
# "+0x1F "
|
||||
int(31)
|
||||
|
||||
# "+0X1F "
|
||||
int(31)
|
||||
|
||||
# "+0x1F "
|
||||
int(31)
|
||||
|
||||
# "+0X1F "
|
||||
int(31)
|
||||
|
||||
# "+0x1F K"
|
||||
int(31744)
|
||||
|
||||
# "+0X1F K"
|
||||
int(31744)
|
||||
|
||||
# "+0x1F K "
|
||||
int(31744)
|
||||
|
||||
# "+0X1F K "
|
||||
int(31744)
|
||||
|
||||
# "+0x1F k"
|
||||
int(31744)
|
||||
|
||||
# "+0X1F k"
|
||||
int(31744)
|
||||
|
||||
# "+0x1F k "
|
||||
int(31744)
|
||||
|
||||
# "+0X1F k "
|
||||
int(31744)
|
||||
|
||||
# "+0x1F M"
|
||||
int(32505856)
|
||||
|
||||
# "+0X1F M"
|
||||
int(32505856)
|
||||
|
||||
# "+0x1F M "
|
||||
int(32505856)
|
||||
|
||||
# "+0X1F M "
|
||||
int(32505856)
|
||||
|
||||
# "+0x1F m"
|
||||
int(32505856)
|
||||
|
||||
# "+0X1F m"
|
||||
int(32505856)
|
||||
|
||||
# "+0x1F m "
|
||||
int(32505856)
|
||||
|
||||
# "+0X1F m "
|
||||
int(32505856)
|
||||
|
||||
# "-0x1F"
|
||||
int(-31)
|
||||
|
||||
# "-0X1F"
|
||||
int(-31)
|
||||
|
||||
# "-0x1F "
|
||||
int(-31)
|
||||
|
||||
# "-0X1F "
|
||||
int(-31)
|
||||
|
||||
# "-0x1FK"
|
||||
int(-31744)
|
||||
|
||||
# "-0X1FK"
|
||||
int(-31744)
|
||||
|
||||
# "-0x1FK "
|
||||
int(-31744)
|
||||
|
||||
# "-0X1FK "
|
||||
int(-31744)
|
||||
|
||||
# "-0x1Fk"
|
||||
int(-31744)
|
||||
|
||||
# "-0X1Fk"
|
||||
int(-31744)
|
||||
|
||||
# "-0x1Fk "
|
||||
int(-31744)
|
||||
|
||||
# "-0X1Fk "
|
||||
int(-31744)
|
||||
|
||||
# "-0x1FM"
|
||||
int(-32505856)
|
||||
|
||||
# "-0X1FM"
|
||||
int(-32505856)
|
||||
|
||||
# "-0x1FM "
|
||||
int(-32505856)
|
||||
|
||||
# "-0X1FM "
|
||||
int(-32505856)
|
||||
|
||||
# "-0x1Fm"
|
||||
int(-32505856)
|
||||
|
||||
# "-0X1Fm"
|
||||
int(-32505856)
|
||||
|
||||
# "-0x1Fm "
|
||||
int(-32505856)
|
||||
|
||||
# "-0X1Fm "
|
||||
int(-32505856)
|
||||
|
||||
# "-0x1F "
|
||||
int(-31)
|
||||
|
||||
# "-0X1F "
|
||||
int(-31)
|
||||
|
||||
# "-0x1F "
|
||||
int(-31)
|
||||
|
||||
# "-0X1F "
|
||||
int(-31)
|
||||
|
||||
# "-0x1F K"
|
||||
int(-31744)
|
||||
|
||||
# "-0X1F K"
|
||||
int(-31744)
|
||||
|
||||
# "-0x1F K "
|
||||
int(-31744)
|
||||
|
||||
# "-0X1F K "
|
||||
int(-31744)
|
||||
|
||||
# "-0x1F k"
|
||||
int(-31744)
|
||||
|
||||
# "-0X1F k"
|
||||
int(-31744)
|
||||
|
||||
# "-0x1F k "
|
||||
int(-31744)
|
||||
|
||||
# "-0X1F k "
|
||||
int(-31744)
|
||||
|
||||
# "-0x1F M"
|
||||
int(-32505856)
|
||||
|
||||
# "-0X1F M"
|
||||
int(-32505856)
|
||||
|
||||
# "-0x1F M "
|
||||
int(-32505856)
|
||||
|
||||
# "-0X1F M "
|
||||
int(-32505856)
|
||||
|
||||
# "-0x1F m"
|
||||
int(-32505856)
|
||||
|
||||
# "-0X1F m"
|
||||
int(-32505856)
|
||||
|
||||
# "-0x1F m "
|
||||
int(-32505856)
|
||||
|
||||
# "-0X1F m "
|
||||
int(-32505856)
|
||||
|
||||
# " 0x1F"
|
||||
int(31)
|
||||
|
||||
# " 0X1F"
|
||||
int(31)
|
||||
|
||||
# " 0x1F "
|
||||
int(31)
|
||||
|
||||
# " 0X1F "
|
||||
int(31)
|
||||
|
||||
# " 0x1FK"
|
||||
int(31744)
|
||||
|
||||
# " 0X1FK"
|
||||
int(31744)
|
||||
|
||||
# " 0x1FK "
|
||||
int(31744)
|
||||
|
||||
# " 0X1FK "
|
||||
int(31744)
|
||||
|
||||
# " 0x1Fk"
|
||||
int(31744)
|
||||
|
||||
# " 0X1Fk"
|
||||
int(31744)
|
||||
|
||||
# " 0x1Fk "
|
||||
int(31744)
|
||||
|
||||
# " 0X1Fk "
|
||||
int(31744)
|
||||
|
||||
# " 0x1FM"
|
||||
int(32505856)
|
||||
|
||||
# " 0X1FM"
|
||||
int(32505856)
|
||||
|
||||
# " 0x1FM "
|
||||
int(32505856)
|
||||
|
||||
# " 0X1FM "
|
||||
int(32505856)
|
||||
|
||||
# " 0x1Fm"
|
||||
int(32505856)
|
||||
|
||||
# " 0X1Fm"
|
||||
int(32505856)
|
||||
|
||||
# " 0x1Fm "
|
||||
int(32505856)
|
||||
|
||||
# " 0X1Fm "
|
||||
int(32505856)
|
||||
|
||||
# " 0x1F "
|
||||
int(31)
|
||||
|
||||
# " 0X1F "
|
||||
int(31)
|
||||
|
||||
# " 0x1F "
|
||||
int(31)
|
||||
|
||||
# " 0X1F "
|
||||
int(31)
|
||||
|
||||
# " 0x1F K"
|
||||
int(31744)
|
||||
|
||||
# " 0X1F K"
|
||||
int(31744)
|
||||
|
||||
# " 0x1F K "
|
||||
int(31744)
|
||||
|
||||
# " 0X1F K "
|
||||
int(31744)
|
||||
|
||||
# " 0x1F k"
|
||||
int(31744)
|
||||
|
||||
# " 0X1F k"
|
||||
int(31744)
|
||||
|
||||
# " 0x1F k "
|
||||
int(31744)
|
||||
|
||||
# " 0X1F k "
|
||||
int(31744)
|
||||
|
||||
# " 0x1F M"
|
||||
int(32505856)
|
||||
|
||||
# " 0X1F M"
|
||||
int(32505856)
|
||||
|
||||
# " 0x1F M "
|
||||
int(32505856)
|
||||
|
||||
# " 0X1F M "
|
||||
int(32505856)
|
||||
|
||||
# " 0x1F m"
|
||||
int(32505856)
|
||||
|
||||
# " 0X1F m"
|
||||
int(32505856)
|
||||
|
||||
# " 0x1F m "
|
||||
int(32505856)
|
||||
|
||||
# " 0X1F m "
|
||||
int(32505856)
|
||||
|
||||
# " +0x1F"
|
||||
int(31)
|
||||
|
||||
# " +0X1F"
|
||||
int(31)
|
||||
|
||||
# " +0x1F "
|
||||
int(31)
|
||||
|
||||
# " +0X1F "
|
||||
int(31)
|
||||
|
||||
# " +0x1FK"
|
||||
int(31744)
|
||||
|
||||
# " +0X1FK"
|
||||
int(31744)
|
||||
|
||||
# " +0x1FK "
|
||||
int(31744)
|
||||
|
||||
# " +0X1FK "
|
||||
int(31744)
|
||||
|
||||
# " +0x1Fk"
|
||||
int(31744)
|
||||
|
||||
# " +0X1Fk"
|
||||
int(31744)
|
||||
|
||||
# " +0x1Fk "
|
||||
int(31744)
|
||||
|
||||
# " +0X1Fk "
|
||||
int(31744)
|
||||
|
||||
# " +0x1FM"
|
||||
int(32505856)
|
||||
|
||||
# " +0X1FM"
|
||||
int(32505856)
|
||||
|
||||
# " +0x1FM "
|
||||
int(32505856)
|
||||
|
||||
# " +0X1FM "
|
||||
int(32505856)
|
||||
|
||||
# " +0x1Fm"
|
||||
int(32505856)
|
||||
|
||||
# " +0X1Fm"
|
||||
int(32505856)
|
||||
|
||||
# " +0x1Fm "
|
||||
int(32505856)
|
||||
|
||||
# " +0X1Fm "
|
||||
int(32505856)
|
||||
|
||||
# " +0x1F "
|
||||
int(31)
|
||||
|
||||
# " +0X1F "
|
||||
int(31)
|
||||
|
||||
# " +0x1F "
|
||||
int(31)
|
||||
|
||||
# " +0X1F "
|
||||
int(31)
|
||||
|
||||
# " +0x1F K"
|
||||
int(31744)
|
||||
|
||||
# " +0X1F K"
|
||||
int(31744)
|
||||
|
||||
# " +0x1F K "
|
||||
int(31744)
|
||||
|
||||
# " +0X1F K "
|
||||
int(31744)
|
||||
|
||||
# " +0x1F k"
|
||||
int(31744)
|
||||
|
||||
# " +0X1F k"
|
||||
int(31744)
|
||||
|
||||
# " +0x1F k "
|
||||
int(31744)
|
||||
|
||||
# " +0X1F k "
|
||||
int(31744)
|
||||
|
||||
# " +0x1F M"
|
||||
int(32505856)
|
||||
|
||||
# " +0X1F M"
|
||||
int(32505856)
|
||||
|
||||
# " +0x1F M "
|
||||
int(32505856)
|
||||
|
||||
# " +0X1F M "
|
||||
int(32505856)
|
||||
|
||||
# " +0x1F m"
|
||||
int(32505856)
|
||||
|
||||
# " +0X1F m"
|
||||
int(32505856)
|
||||
|
||||
# " +0x1F m "
|
||||
int(32505856)
|
||||
|
||||
# " +0X1F m "
|
||||
int(32505856)
|
||||
|
||||
# " -0x1F"
|
||||
int(-31)
|
||||
|
||||
# " -0X1F"
|
||||
int(-31)
|
||||
|
||||
# " -0x1F "
|
||||
int(-31)
|
||||
|
||||
# " -0X1F "
|
||||
int(-31)
|
||||
|
||||
# " -0x1FK"
|
||||
int(-31744)
|
||||
|
||||
# " -0X1FK"
|
||||
int(-31744)
|
||||
|
||||
# " -0x1FK "
|
||||
int(-31744)
|
||||
|
||||
# " -0X1FK "
|
||||
int(-31744)
|
||||
|
||||
# " -0x1Fk"
|
||||
int(-31744)
|
||||
|
||||
# " -0X1Fk"
|
||||
int(-31744)
|
||||
|
||||
# " -0x1Fk "
|
||||
int(-31744)
|
||||
|
||||
# " -0X1Fk "
|
||||
int(-31744)
|
||||
|
||||
# " -0x1FM"
|
||||
int(-32505856)
|
||||
|
||||
# " -0X1FM"
|
||||
int(-32505856)
|
||||
|
||||
# " -0x1FM "
|
||||
int(-32505856)
|
||||
|
||||
# " -0X1FM "
|
||||
int(-32505856)
|
||||
|
||||
# " -0x1Fm"
|
||||
int(-32505856)
|
||||
|
||||
# " -0X1Fm"
|
||||
int(-32505856)
|
||||
|
||||
# " -0x1Fm "
|
||||
int(-32505856)
|
||||
|
||||
# " -0X1Fm "
|
||||
int(-32505856)
|
||||
|
||||
# " -0x1F "
|
||||
int(-31)
|
||||
|
||||
# " -0X1F "
|
||||
int(-31)
|
||||
|
||||
# " -0x1F "
|
||||
int(-31)
|
||||
|
||||
# " -0X1F "
|
||||
int(-31)
|
||||
|
||||
# " -0x1F K"
|
||||
int(-31744)
|
||||
|
||||
# " -0X1F K"
|
||||
int(-31744)
|
||||
|
||||
# " -0x1F K "
|
||||
int(-31744)
|
||||
|
||||
# " -0X1F K "
|
||||
int(-31744)
|
||||
|
||||
# " -0x1F k"
|
||||
int(-31744)
|
||||
|
||||
# " -0X1F k"
|
||||
int(-31744)
|
||||
|
||||
# " -0x1F k "
|
||||
int(-31744)
|
||||
|
||||
# " -0X1F k "
|
||||
int(-31744)
|
||||
|
||||
# " -0x1F M"
|
||||
int(-32505856)
|
||||
|
||||
# " -0X1F M"
|
||||
int(-32505856)
|
||||
|
||||
# " -0x1F M "
|
||||
int(-32505856)
|
||||
|
||||
# " -0X1F M "
|
||||
int(-32505856)
|
||||
|
||||
# " -0x1F m"
|
||||
int(-32505856)
|
||||
|
||||
# " -0X1F m"
|
||||
int(-32505856)
|
||||
|
||||
# " -0x1F m "
|
||||
int(-32505856)
|
||||
|
||||
# " -0X1F m "
|
||||
int(-32505856)
|
||||
750
Zend/tests/zend_ini/zend_ini_parse_quantity_octal_prefixes.phpt
Normal file
750
Zend/tests/zend_ini/zend_ini_parse_quantity_octal_prefixes.phpt
Normal file
@@ -0,0 +1,750 @@
|
||||
--TEST--
|
||||
Test parsing of octal quantities
|
||||
--EXTENSIONS--
|
||||
zend_test
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
// This test checks valid formats do not throw any warnings.
|
||||
foreach (['', ' '] as $leadingWS) {
|
||||
foreach (['', '+', '-'] as $sign) {
|
||||
foreach (['', ' '] as $midWS) {
|
||||
// Ignore G due to overflow on 32bits
|
||||
foreach (['', 'K', 'k', 'M', 'm'] as $exp) {
|
||||
foreach (['', ' '] as $trailingWS) {
|
||||
$setting = sprintf('%s%s0o14%s%s%s',
|
||||
$leadingWS, $sign, $midWS, $exp, $trailingWS);
|
||||
printf("# \"%s\"\n", $setting);
|
||||
var_dump(zend_test_zend_ini_parse_quantity($setting));
|
||||
print "\n";
|
||||
|
||||
$setting = sprintf('%s%s0O14%s%s%s',
|
||||
$leadingWS, $sign, $midWS, $exp, $trailingWS);
|
||||
printf("# \"%s\"\n", $setting);
|
||||
var_dump(zend_test_zend_ini_parse_quantity($setting));
|
||||
print "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
--EXPECT--
|
||||
# "0o14"
|
||||
int(12)
|
||||
|
||||
# "0O14"
|
||||
int(12)
|
||||
|
||||
# "0o14 "
|
||||
int(12)
|
||||
|
||||
# "0O14 "
|
||||
int(12)
|
||||
|
||||
# "0o14K"
|
||||
int(12288)
|
||||
|
||||
# "0O14K"
|
||||
int(12288)
|
||||
|
||||
# "0o14K "
|
||||
int(12288)
|
||||
|
||||
# "0O14K "
|
||||
int(12288)
|
||||
|
||||
# "0o14k"
|
||||
int(12288)
|
||||
|
||||
# "0O14k"
|
||||
int(12288)
|
||||
|
||||
# "0o14k "
|
||||
int(12288)
|
||||
|
||||
# "0O14k "
|
||||
int(12288)
|
||||
|
||||
# "0o14M"
|
||||
int(12582912)
|
||||
|
||||
# "0O14M"
|
||||
int(12582912)
|
||||
|
||||
# "0o14M "
|
||||
int(12582912)
|
||||
|
||||
# "0O14M "
|
||||
int(12582912)
|
||||
|
||||
# "0o14m"
|
||||
int(12582912)
|
||||
|
||||
# "0O14m"
|
||||
int(12582912)
|
||||
|
||||
# "0o14m "
|
||||
int(12582912)
|
||||
|
||||
# "0O14m "
|
||||
int(12582912)
|
||||
|
||||
# "0o14 "
|
||||
int(12)
|
||||
|
||||
# "0O14 "
|
||||
int(12)
|
||||
|
||||
# "0o14 "
|
||||
int(12)
|
||||
|
||||
# "0O14 "
|
||||
int(12)
|
||||
|
||||
# "0o14 K"
|
||||
int(12288)
|
||||
|
||||
# "0O14 K"
|
||||
int(12288)
|
||||
|
||||
# "0o14 K "
|
||||
int(12288)
|
||||
|
||||
# "0O14 K "
|
||||
int(12288)
|
||||
|
||||
# "0o14 k"
|
||||
int(12288)
|
||||
|
||||
# "0O14 k"
|
||||
int(12288)
|
||||
|
||||
# "0o14 k "
|
||||
int(12288)
|
||||
|
||||
# "0O14 k "
|
||||
int(12288)
|
||||
|
||||
# "0o14 M"
|
||||
int(12582912)
|
||||
|
||||
# "0O14 M"
|
||||
int(12582912)
|
||||
|
||||
# "0o14 M "
|
||||
int(12582912)
|
||||
|
||||
# "0O14 M "
|
||||
int(12582912)
|
||||
|
||||
# "0o14 m"
|
||||
int(12582912)
|
||||
|
||||
# "0O14 m"
|
||||
int(12582912)
|
||||
|
||||
# "0o14 m "
|
||||
int(12582912)
|
||||
|
||||
# "0O14 m "
|
||||
int(12582912)
|
||||
|
||||
# "+0o14"
|
||||
int(12)
|
||||
|
||||
# "+0O14"
|
||||
int(12)
|
||||
|
||||
# "+0o14 "
|
||||
int(12)
|
||||
|
||||
# "+0O14 "
|
||||
int(12)
|
||||
|
||||
# "+0o14K"
|
||||
int(12288)
|
||||
|
||||
# "+0O14K"
|
||||
int(12288)
|
||||
|
||||
# "+0o14K "
|
||||
int(12288)
|
||||
|
||||
# "+0O14K "
|
||||
int(12288)
|
||||
|
||||
# "+0o14k"
|
||||
int(12288)
|
||||
|
||||
# "+0O14k"
|
||||
int(12288)
|
||||
|
||||
# "+0o14k "
|
||||
int(12288)
|
||||
|
||||
# "+0O14k "
|
||||
int(12288)
|
||||
|
||||
# "+0o14M"
|
||||
int(12582912)
|
||||
|
||||
# "+0O14M"
|
||||
int(12582912)
|
||||
|
||||
# "+0o14M "
|
||||
int(12582912)
|
||||
|
||||
# "+0O14M "
|
||||
int(12582912)
|
||||
|
||||
# "+0o14m"
|
||||
int(12582912)
|
||||
|
||||
# "+0O14m"
|
||||
int(12582912)
|
||||
|
||||
# "+0o14m "
|
||||
int(12582912)
|
||||
|
||||
# "+0O14m "
|
||||
int(12582912)
|
||||
|
||||
# "+0o14 "
|
||||
int(12)
|
||||
|
||||
# "+0O14 "
|
||||
int(12)
|
||||
|
||||
# "+0o14 "
|
||||
int(12)
|
||||
|
||||
# "+0O14 "
|
||||
int(12)
|
||||
|
||||
# "+0o14 K"
|
||||
int(12288)
|
||||
|
||||
# "+0O14 K"
|
||||
int(12288)
|
||||
|
||||
# "+0o14 K "
|
||||
int(12288)
|
||||
|
||||
# "+0O14 K "
|
||||
int(12288)
|
||||
|
||||
# "+0o14 k"
|
||||
int(12288)
|
||||
|
||||
# "+0O14 k"
|
||||
int(12288)
|
||||
|
||||
# "+0o14 k "
|
||||
int(12288)
|
||||
|
||||
# "+0O14 k "
|
||||
int(12288)
|
||||
|
||||
# "+0o14 M"
|
||||
int(12582912)
|
||||
|
||||
# "+0O14 M"
|
||||
int(12582912)
|
||||
|
||||
# "+0o14 M "
|
||||
int(12582912)
|
||||
|
||||
# "+0O14 M "
|
||||
int(12582912)
|
||||
|
||||
# "+0o14 m"
|
||||
int(12582912)
|
||||
|
||||
# "+0O14 m"
|
||||
int(12582912)
|
||||
|
||||
# "+0o14 m "
|
||||
int(12582912)
|
||||
|
||||
# "+0O14 m "
|
||||
int(12582912)
|
||||
|
||||
# "-0o14"
|
||||
int(-12)
|
||||
|
||||
# "-0O14"
|
||||
int(-12)
|
||||
|
||||
# "-0o14 "
|
||||
int(-12)
|
||||
|
||||
# "-0O14 "
|
||||
int(-12)
|
||||
|
||||
# "-0o14K"
|
||||
int(-12288)
|
||||
|
||||
# "-0O14K"
|
||||
int(-12288)
|
||||
|
||||
# "-0o14K "
|
||||
int(-12288)
|
||||
|
||||
# "-0O14K "
|
||||
int(-12288)
|
||||
|
||||
# "-0o14k"
|
||||
int(-12288)
|
||||
|
||||
# "-0O14k"
|
||||
int(-12288)
|
||||
|
||||
# "-0o14k "
|
||||
int(-12288)
|
||||
|
||||
# "-0O14k "
|
||||
int(-12288)
|
||||
|
||||
# "-0o14M"
|
||||
int(-12582912)
|
||||
|
||||
# "-0O14M"
|
||||
int(-12582912)
|
||||
|
||||
# "-0o14M "
|
||||
int(-12582912)
|
||||
|
||||
# "-0O14M "
|
||||
int(-12582912)
|
||||
|
||||
# "-0o14m"
|
||||
int(-12582912)
|
||||
|
||||
# "-0O14m"
|
||||
int(-12582912)
|
||||
|
||||
# "-0o14m "
|
||||
int(-12582912)
|
||||
|
||||
# "-0O14m "
|
||||
int(-12582912)
|
||||
|
||||
# "-0o14 "
|
||||
int(-12)
|
||||
|
||||
# "-0O14 "
|
||||
int(-12)
|
||||
|
||||
# "-0o14 "
|
||||
int(-12)
|
||||
|
||||
# "-0O14 "
|
||||
int(-12)
|
||||
|
||||
# "-0o14 K"
|
||||
int(-12288)
|
||||
|
||||
# "-0O14 K"
|
||||
int(-12288)
|
||||
|
||||
# "-0o14 K "
|
||||
int(-12288)
|
||||
|
||||
# "-0O14 K "
|
||||
int(-12288)
|
||||
|
||||
# "-0o14 k"
|
||||
int(-12288)
|
||||
|
||||
# "-0O14 k"
|
||||
int(-12288)
|
||||
|
||||
# "-0o14 k "
|
||||
int(-12288)
|
||||
|
||||
# "-0O14 k "
|
||||
int(-12288)
|
||||
|
||||
# "-0o14 M"
|
||||
int(-12582912)
|
||||
|
||||
# "-0O14 M"
|
||||
int(-12582912)
|
||||
|
||||
# "-0o14 M "
|
||||
int(-12582912)
|
||||
|
||||
# "-0O14 M "
|
||||
int(-12582912)
|
||||
|
||||
# "-0o14 m"
|
||||
int(-12582912)
|
||||
|
||||
# "-0O14 m"
|
||||
int(-12582912)
|
||||
|
||||
# "-0o14 m "
|
||||
int(-12582912)
|
||||
|
||||
# "-0O14 m "
|
||||
int(-12582912)
|
||||
|
||||
# " 0o14"
|
||||
int(12)
|
||||
|
||||
# " 0O14"
|
||||
int(12)
|
||||
|
||||
# " 0o14 "
|
||||
int(12)
|
||||
|
||||
# " 0O14 "
|
||||
int(12)
|
||||
|
||||
# " 0o14K"
|
||||
int(12288)
|
||||
|
||||
# " 0O14K"
|
||||
int(12288)
|
||||
|
||||
# " 0o14K "
|
||||
int(12288)
|
||||
|
||||
# " 0O14K "
|
||||
int(12288)
|
||||
|
||||
# " 0o14k"
|
||||
int(12288)
|
||||
|
||||
# " 0O14k"
|
||||
int(12288)
|
||||
|
||||
# " 0o14k "
|
||||
int(12288)
|
||||
|
||||
# " 0O14k "
|
||||
int(12288)
|
||||
|
||||
# " 0o14M"
|
||||
int(12582912)
|
||||
|
||||
# " 0O14M"
|
||||
int(12582912)
|
||||
|
||||
# " 0o14M "
|
||||
int(12582912)
|
||||
|
||||
# " 0O14M "
|
||||
int(12582912)
|
||||
|
||||
# " 0o14m"
|
||||
int(12582912)
|
||||
|
||||
# " 0O14m"
|
||||
int(12582912)
|
||||
|
||||
# " 0o14m "
|
||||
int(12582912)
|
||||
|
||||
# " 0O14m "
|
||||
int(12582912)
|
||||
|
||||
# " 0o14 "
|
||||
int(12)
|
||||
|
||||
# " 0O14 "
|
||||
int(12)
|
||||
|
||||
# " 0o14 "
|
||||
int(12)
|
||||
|
||||
# " 0O14 "
|
||||
int(12)
|
||||
|
||||
# " 0o14 K"
|
||||
int(12288)
|
||||
|
||||
# " 0O14 K"
|
||||
int(12288)
|
||||
|
||||
# " 0o14 K "
|
||||
int(12288)
|
||||
|
||||
# " 0O14 K "
|
||||
int(12288)
|
||||
|
||||
# " 0o14 k"
|
||||
int(12288)
|
||||
|
||||
# " 0O14 k"
|
||||
int(12288)
|
||||
|
||||
# " 0o14 k "
|
||||
int(12288)
|
||||
|
||||
# " 0O14 k "
|
||||
int(12288)
|
||||
|
||||
# " 0o14 M"
|
||||
int(12582912)
|
||||
|
||||
# " 0O14 M"
|
||||
int(12582912)
|
||||
|
||||
# " 0o14 M "
|
||||
int(12582912)
|
||||
|
||||
# " 0O14 M "
|
||||
int(12582912)
|
||||
|
||||
# " 0o14 m"
|
||||
int(12582912)
|
||||
|
||||
# " 0O14 m"
|
||||
int(12582912)
|
||||
|
||||
# " 0o14 m "
|
||||
int(12582912)
|
||||
|
||||
# " 0O14 m "
|
||||
int(12582912)
|
||||
|
||||
# " +0o14"
|
||||
int(12)
|
||||
|
||||
# " +0O14"
|
||||
int(12)
|
||||
|
||||
# " +0o14 "
|
||||
int(12)
|
||||
|
||||
# " +0O14 "
|
||||
int(12)
|
||||
|
||||
# " +0o14K"
|
||||
int(12288)
|
||||
|
||||
# " +0O14K"
|
||||
int(12288)
|
||||
|
||||
# " +0o14K "
|
||||
int(12288)
|
||||
|
||||
# " +0O14K "
|
||||
int(12288)
|
||||
|
||||
# " +0o14k"
|
||||
int(12288)
|
||||
|
||||
# " +0O14k"
|
||||
int(12288)
|
||||
|
||||
# " +0o14k "
|
||||
int(12288)
|
||||
|
||||
# " +0O14k "
|
||||
int(12288)
|
||||
|
||||
# " +0o14M"
|
||||
int(12582912)
|
||||
|
||||
# " +0O14M"
|
||||
int(12582912)
|
||||
|
||||
# " +0o14M "
|
||||
int(12582912)
|
||||
|
||||
# " +0O14M "
|
||||
int(12582912)
|
||||
|
||||
# " +0o14m"
|
||||
int(12582912)
|
||||
|
||||
# " +0O14m"
|
||||
int(12582912)
|
||||
|
||||
# " +0o14m "
|
||||
int(12582912)
|
||||
|
||||
# " +0O14m "
|
||||
int(12582912)
|
||||
|
||||
# " +0o14 "
|
||||
int(12)
|
||||
|
||||
# " +0O14 "
|
||||
int(12)
|
||||
|
||||
# " +0o14 "
|
||||
int(12)
|
||||
|
||||
# " +0O14 "
|
||||
int(12)
|
||||
|
||||
# " +0o14 K"
|
||||
int(12288)
|
||||
|
||||
# " +0O14 K"
|
||||
int(12288)
|
||||
|
||||
# " +0o14 K "
|
||||
int(12288)
|
||||
|
||||
# " +0O14 K "
|
||||
int(12288)
|
||||
|
||||
# " +0o14 k"
|
||||
int(12288)
|
||||
|
||||
# " +0O14 k"
|
||||
int(12288)
|
||||
|
||||
# " +0o14 k "
|
||||
int(12288)
|
||||
|
||||
# " +0O14 k "
|
||||
int(12288)
|
||||
|
||||
# " +0o14 M"
|
||||
int(12582912)
|
||||
|
||||
# " +0O14 M"
|
||||
int(12582912)
|
||||
|
||||
# " +0o14 M "
|
||||
int(12582912)
|
||||
|
||||
# " +0O14 M "
|
||||
int(12582912)
|
||||
|
||||
# " +0o14 m"
|
||||
int(12582912)
|
||||
|
||||
# " +0O14 m"
|
||||
int(12582912)
|
||||
|
||||
# " +0o14 m "
|
||||
int(12582912)
|
||||
|
||||
# " +0O14 m "
|
||||
int(12582912)
|
||||
|
||||
# " -0o14"
|
||||
int(-12)
|
||||
|
||||
# " -0O14"
|
||||
int(-12)
|
||||
|
||||
# " -0o14 "
|
||||
int(-12)
|
||||
|
||||
# " -0O14 "
|
||||
int(-12)
|
||||
|
||||
# " -0o14K"
|
||||
int(-12288)
|
||||
|
||||
# " -0O14K"
|
||||
int(-12288)
|
||||
|
||||
# " -0o14K "
|
||||
int(-12288)
|
||||
|
||||
# " -0O14K "
|
||||
int(-12288)
|
||||
|
||||
# " -0o14k"
|
||||
int(-12288)
|
||||
|
||||
# " -0O14k"
|
||||
int(-12288)
|
||||
|
||||
# " -0o14k "
|
||||
int(-12288)
|
||||
|
||||
# " -0O14k "
|
||||
int(-12288)
|
||||
|
||||
# " -0o14M"
|
||||
int(-12582912)
|
||||
|
||||
# " -0O14M"
|
||||
int(-12582912)
|
||||
|
||||
# " -0o14M "
|
||||
int(-12582912)
|
||||
|
||||
# " -0O14M "
|
||||
int(-12582912)
|
||||
|
||||
# " -0o14m"
|
||||
int(-12582912)
|
||||
|
||||
# " -0O14m"
|
||||
int(-12582912)
|
||||
|
||||
# " -0o14m "
|
||||
int(-12582912)
|
||||
|
||||
# " -0O14m "
|
||||
int(-12582912)
|
||||
|
||||
# " -0o14 "
|
||||
int(-12)
|
||||
|
||||
# " -0O14 "
|
||||
int(-12)
|
||||
|
||||
# " -0o14 "
|
||||
int(-12)
|
||||
|
||||
# " -0O14 "
|
||||
int(-12)
|
||||
|
||||
# " -0o14 K"
|
||||
int(-12288)
|
||||
|
||||
# " -0O14 K"
|
||||
int(-12288)
|
||||
|
||||
# " -0o14 K "
|
||||
int(-12288)
|
||||
|
||||
# " -0O14 K "
|
||||
int(-12288)
|
||||
|
||||
# " -0o14 k"
|
||||
int(-12288)
|
||||
|
||||
# " -0O14 k"
|
||||
int(-12288)
|
||||
|
||||
# " -0o14 k "
|
||||
int(-12288)
|
||||
|
||||
# " -0O14 k "
|
||||
int(-12288)
|
||||
|
||||
# " -0o14 M"
|
||||
int(-12582912)
|
||||
|
||||
# " -0O14 M"
|
||||
int(-12582912)
|
||||
|
||||
# " -0o14 M "
|
||||
int(-12582912)
|
||||
|
||||
# " -0O14 M "
|
||||
int(-12582912)
|
||||
|
||||
# " -0o14 m"
|
||||
int(-12582912)
|
||||
|
||||
# " -0O14 m"
|
||||
int(-12582912)
|
||||
|
||||
# " -0o14 m "
|
||||
int(-12582912)
|
||||
|
||||
# " -0O14 m "
|
||||
int(-12582912)
|
||||
71
Zend/tests/zend_ini/zend_ini_parse_quantity_zero.phpt
Normal file
71
Zend/tests/zend_ini/zend_ini_parse_quantity_zero.phpt
Normal file
@@ -0,0 +1,71 @@
|
||||
--TEST--
|
||||
Test parsing of valid 0 quantities
|
||||
--EXTENSIONS--
|
||||
zend_test
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$tests = [
|
||||
'0',
|
||||
'0K',
|
||||
'0k',
|
||||
'0M',
|
||||
'0m',
|
||||
'0G',
|
||||
'0g',
|
||||
'-0',
|
||||
'-0K',
|
||||
'-0k',
|
||||
'-0M',
|
||||
'-0m',
|
||||
'-0G',
|
||||
'-0g',
|
||||
];
|
||||
|
||||
foreach ($tests as $setting) {
|
||||
printf("# \"%s\"\n", addcslashes($setting, "\0..\37!@\177..\377"));
|
||||
var_dump(zend_test_zend_ini_parse_quantity($setting));
|
||||
print "\n";
|
||||
}
|
||||
--EXPECT--
|
||||
# "0"
|
||||
int(0)
|
||||
|
||||
# "0K"
|
||||
int(0)
|
||||
|
||||
# "0k"
|
||||
int(0)
|
||||
|
||||
# "0M"
|
||||
int(0)
|
||||
|
||||
# "0m"
|
||||
int(0)
|
||||
|
||||
# "0G"
|
||||
int(0)
|
||||
|
||||
# "0g"
|
||||
int(0)
|
||||
|
||||
# "-0"
|
||||
int(0)
|
||||
|
||||
# "-0K"
|
||||
int(0)
|
||||
|
||||
# "-0k"
|
||||
int(0)
|
||||
|
||||
# "-0M"
|
||||
int(0)
|
||||
|
||||
# "-0m"
|
||||
int(0)
|
||||
|
||||
# "-0G"
|
||||
int(0)
|
||||
|
||||
# "-0g"
|
||||
int(0)
|
||||
104
Zend/zend_ini.c
104
Zend/zend_ini.c
@@ -25,6 +25,7 @@
|
||||
#include "zend_strtod.h"
|
||||
#include "zend_modules.h"
|
||||
#include "zend_smart_str.h"
|
||||
#include <ctype.h>
|
||||
|
||||
static HashTable *registered_zend_ini_directives;
|
||||
|
||||
@@ -560,33 +561,110 @@ static zend_ulong zend_ini_parse_quantity_internal(zend_string *value, zend_ini_
|
||||
|
||||
/* Ignore leading whitespace. ZEND_STRTOL() also skips leading whitespaces,
|
||||
* but we need the position of the first non-whitespace later. */
|
||||
while (digits < str_end && zend_is_whitespace(*digits)) ++digits;
|
||||
while (digits < str_end && zend_is_whitespace(*digits)) {++digits;}
|
||||
|
||||
/* Ignore trailing whitespace */
|
||||
while (digits < str_end && zend_is_whitespace(*(str_end-1))) --str_end;
|
||||
while (digits < str_end && zend_is_whitespace(*(str_end-1))) {--str_end;}
|
||||
|
||||
if (digits == str_end) {
|
||||
*errstr = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
zend_ulong retval;
|
||||
errno = 0;
|
||||
|
||||
if (signed_result == ZEND_INI_PARSE_QUANTITY_SIGNED) {
|
||||
retval = (zend_ulong) ZEND_STRTOL(digits, &digits_end, 0);
|
||||
} else {
|
||||
retval = ZEND_STRTOUL(digits, &digits_end, 0);
|
||||
bool is_negative = false;
|
||||
if (digits[0] == '+') {
|
||||
++digits;
|
||||
} else if (digits[0] == '-') {
|
||||
is_negative = true;
|
||||
++digits;
|
||||
}
|
||||
|
||||
/* if there is no digit after +/- */
|
||||
if (!isdigit(digits[0])) {
|
||||
/* Escape the string to avoid null bytes and to make non-printable chars
|
||||
* visible */
|
||||
smart_str_append_escaped(&invalid, ZSTR_VAL(value), ZSTR_LEN(value));
|
||||
smart_str_0(&invalid);
|
||||
|
||||
*errstr = zend_strpprintf(0, "Invalid quantity \"%s\": no valid leading digits, interpreting as \"0\" for backwards compatibility",
|
||||
ZSTR_VAL(invalid.s));
|
||||
|
||||
smart_str_free(&invalid);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int base = 0;
|
||||
if (digits[0] == '0' && !isdigit(digits[1])) {
|
||||
/* Value is just 0 */
|
||||
if ((digits+1) == str_end) {
|
||||
*errstr = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
switch (digits[1]) {
|
||||
/* Multiplier suffixes */
|
||||
case 'g':
|
||||
case 'G':
|
||||
case 'm':
|
||||
case 'M':
|
||||
case 'k':
|
||||
case 'K':
|
||||
goto evaluation;
|
||||
case 'x':
|
||||
case 'X':
|
||||
base = 16;
|
||||
break;
|
||||
case 'o':
|
||||
case 'O':
|
||||
base = 8;
|
||||
break;
|
||||
case 'b':
|
||||
case 'B':
|
||||
base = 2;
|
||||
break;
|
||||
default:
|
||||
*errstr = zend_strpprintf(0, "Invalid prefix \"0%c\", interpreting as \"0\" for backwards compatibility",
|
||||
digits[1]);
|
||||
return 0;
|
||||
}
|
||||
digits += 2;
|
||||
if (UNEXPECTED(digits == str_end)) {
|
||||
/* Escape the string to avoid null bytes and to make non-printable chars
|
||||
* visible */
|
||||
smart_str_append_escaped(&invalid, ZSTR_VAL(value), ZSTR_LEN(value));
|
||||
smart_str_0(&invalid);
|
||||
|
||||
*errstr = zend_strpprintf(0, "Invalid quantity \"%s\": no digits after base prefix, interpreting as \"0\" for backwards compatibility",
|
||||
ZSTR_VAL(invalid.s));
|
||||
|
||||
smart_str_free(&invalid);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
evaluation:
|
||||
|
||||
errno = 0;
|
||||
zend_ulong retval = ZEND_STRTOUL(digits, &digits_end, base);
|
||||
|
||||
if (errno == ERANGE) {
|
||||
overflow = true;
|
||||
} else if (signed_result == ZEND_INI_PARSE_QUANTITY_UNSIGNED) {
|
||||
/* ZEND_STRTOUL() does not report a range error when the subject starts
|
||||
* with a minus sign, so we check this here. Ignore "-1" as it is
|
||||
* commonly used as max value, for instance in memory_limit=-1. */
|
||||
if (digits[0] == '-' && !(digits_end - digits == 2 && digits_end == str_end && digits[1] == '1')) {
|
||||
if (is_negative) {
|
||||
/* Ignore "-1" as it is commonly used as max value, for instance in memory_limit=-1. */
|
||||
if (retval == 1 && digits_end == str_end) {
|
||||
retval = -1;
|
||||
} else {
|
||||
overflow = true;
|
||||
}
|
||||
}
|
||||
} else if (signed_result == ZEND_INI_PARSE_QUANTITY_SIGNED) {
|
||||
/* Handle PHP_INT_MIN case */
|
||||
if (is_negative && retval == ((zend_ulong)ZEND_LONG_MAX +1)) {
|
||||
retval = 0u - retval;
|
||||
} else if ((zend_long) retval < 0) {
|
||||
overflow = true;
|
||||
} else if (is_negative) {
|
||||
retval = 0u - retval;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user