Skip to content

Commit 2c26772

Browse files
committed
Fix phpGH-16886: ini_parse_quantity() fails to emit warning for 0x+0
1 parent e6e2ec5 commit 2c26772

File tree

2 files changed

+42
-1
lines changed

2 files changed

+42
-1
lines changed

Zend/tests/zend_ini/gh16886.phpt

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
--TEST--
2+
GH-16886 (ini_parse_quantity() fails to emit warning for 0x+0)
3+
--FILE--
4+
<?php
5+
echo ini_parse_quantity('0x 0'), "\n";
6+
echo ini_parse_quantity('0x+0'), "\n";
7+
echo ini_parse_quantity('0x-0'), "\n";
8+
echo ini_parse_quantity('0b 0'), "\n";
9+
echo ini_parse_quantity('0b+0'), "\n";
10+
echo ini_parse_quantity('0b-0'), "\n";
11+
echo ini_parse_quantity('0o 0'), "\n";
12+
echo ini_parse_quantity('0o+0'), "\n";
13+
echo ini_parse_quantity('0o-0'), "\n";
14+
?>
15+
--EXPECTF--
16+
Warning: Invalid quantity "0x 0": no digits after base prefix, interpreting as "0" for backwards compatibility in %s on line %d
17+
0
18+
19+
Warning: Invalid quantity "0x+0": no digits after base prefix, interpreting as "0" for backwards compatibility in %s on line %d
20+
0
21+
22+
Warning: Invalid quantity "0x-0": no digits after base prefix, interpreting as "0" for backwards compatibility in %s on line %d
23+
0
24+
25+
Warning: Invalid quantity "0b 0": no digits after base prefix, interpreting as "0" for backwards compatibility in %s on line %d
26+
0
27+
28+
Warning: Invalid quantity "0b+0": no digits after base prefix, interpreting as "0" for backwards compatibility in %s on line %d
29+
0
30+
31+
Warning: Invalid quantity "0b-0": no digits after base prefix, interpreting as "0" for backwards compatibility in %s on line %d
32+
0
33+
34+
Warning: Invalid quantity "0o 0": no digits after base prefix, interpreting as "0" for backwards compatibility in %s on line %d
35+
0
36+
37+
Warning: Invalid quantity "0o+0": no digits after base prefix, interpreting as "0" for backwards compatibility in %s on line %d
38+
0
39+
40+
Warning: Invalid quantity "0o-0": no digits after base prefix, interpreting as "0" for backwards compatibility in %s on line %d
41+
0

Zend/zend_ini.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -598,7 +598,7 @@ static const char *zend_ini_consume_quantity_prefix(const char *const digits, co
598598
if (digits_consumed[0] == '0' && !isdigit(digits_consumed[1])) {
599599
/* Value is just 0 */
600600
if ((digits_consumed+1) == str_end) {
601-
return digits;
601+
return digits_consumed;
602602
}
603603

604604
switch (digits_consumed[1]) {

0 commit comments

Comments
 (0)