File: zend_ini_parse_uquantity_overflow.phpt

package info (click to toggle)
php8.4 8.4.11-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 208,108 kB
  • sloc: ansic: 1,060,628; php: 35,345; sh: 11,866; cpp: 7,201; pascal: 4,913; javascript: 3,091; asm: 2,810; yacc: 2,411; makefile: 689; xml: 446; python: 301; awk: 148
file content (118 lines) | stat: -rw-r--r-- 2,740 bytes parent folder | download
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)