Skip to content

Commit f6455c5

Browse files
committed
Emit diagnostic on unknown printf specifier
Removing lots of bogus tests... Closes GH-5435.
1 parent 6ef0d47 commit f6455c5

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+255
-1068
lines changed

ext/standard/formatted_print.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -621,7 +621,8 @@ php_formatted_print(char *format, size_t format_len, zval *args, int argc, int n
621621
break;
622622

623623
default:
624-
break;
624+
zend_value_error("Unknown format specifier '%c'", *format);
625+
goto fail;
625626
}
626627
format++;
627628
format_len--;

ext/standard/tests/strings/printf.phpt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ precision=14
55
--SKIPIF--
66
<?php
77
if (PHP_INT_MAX > 2147483647) {
8-
die("skip 32bit test only");
8+
die("skip 32bit test only");
99
}
1010
?>
1111
--FILE--
@@ -207,7 +207,11 @@ echo"\n\n*** Output for precision value more than maximum ***\n";
207207
printf("%.988f",1.23456789e10);
208208

209209
echo"\n\n*** Output for invalid width(-15) specifier ***\n";
210-
printf("%030.-15s", $tempstring);
210+
try {
211+
printf("%030.-15s", $tempstring);
212+
} catch (ValueError $e) {
213+
echo $e->getMessage();
214+
}
211215

212216
echo"\n\n*** Output for '%F' as the format parameter ***\n";
213217
printf("%F",1.23456789e10);
@@ -679,7 +683,7 @@ Notice: printf(): Requested precision of 988 digits was truncated to PHP maximum
679683
12345678900.00000000000000000000000000000000000000000000000000000
680684

681685
*** Output for invalid width(-15) specifier ***
682-
15s
686+
Unknown format specifier '-'
683687

684688
*** Output for '%F' as the format parameter ***
685689
12345678900.000000

ext/standard/tests/strings/printf_64bit.phpt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,11 @@ echo"\n\n*** Output for precision value more than maximum ***\n";
207207
printf("%.988f",1.23456789e10);
208208

209209
echo"\n\n*** Output for invalid width(-15) specifier ***\n";
210-
printf("%030.-15s", $tempstring);
210+
try {
211+
printf("%030.-15s", $tempstring);
212+
} catch (ValueError $e) {
213+
echo $e->getMessage();
214+
}
211215

212216
echo"\n\n*** Output for '%F' as the format parameter ***\n";
213217
printf("%F",1.23456789e10);
@@ -679,7 +683,7 @@ Notice: printf(): Requested precision of 988 digits was truncated to PHP maximum
679683
12345678900.0000000000%d
680684

681685
*** Output for invalid width(-15) specifier ***
682-
15s
686+
Unknown format specifier '-'
683687

684688
*** Output for '%F' as the format parameter ***
685689
12345678900.000000

ext/standard/tests/strings/sprintf_variation10.phpt

Lines changed: 2 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,8 @@ $integer_values = array (
3333

3434
// various float formats
3535
$float_formats = array(
36-
"%f", "%hf", "%lf",
37-
"%Lf", " %f", "%f ",
38-
"\t%f", "\n%f", "%4f",
39-
"%30f", "%[0-9]", "%*f"
36+
"%f", "%lf", " %f", "%f ",
37+
"\t%f", "\n%f", "%4f", "%30f",
4038
);
4139

4240
$count = 1;
@@ -57,271 +55,199 @@ echo "Done";
5755

5856
-- Iteration 1 --
5957
string(8) "0.000000"
60-
string(1) "f"
6158
string(8) "0.000000"
62-
string(1) "f"
6359
string(9) " 0.000000"
6460
string(9) "0.000000 "
6561
string(9) " 0.000000"
6662
string(9) "
6763
0.000000"
6864
string(8) "0.000000"
6965
string(30) " 0.000000"
70-
string(4) "0-9]"
71-
string(1) "f"
7266

7367
-- Iteration 2 --
7468
string(8) "1.000000"
75-
string(1) "f"
7669
string(8) "1.000000"
77-
string(1) "f"
7870
string(9) " 1.000000"
7971
string(9) "1.000000 "
8072
string(9) " 1.000000"
8173
string(9) "
8274
1.000000"
8375
string(8) "1.000000"
8476
string(30) " 1.000000"
85-
string(4) "0-9]"
86-
string(1) "f"
8777

8878
-- Iteration 3 --
8979
string(9) "-1.000000"
90-
string(1) "f"
9180
string(9) "-1.000000"
92-
string(1) "f"
9381
string(10) " -1.000000"
9482
string(10) "-1.000000 "
9583
string(10) " -1.000000"
9684
string(10) "
9785
-1.000000"
9886
string(9) "-1.000000"
9987
string(30) " -1.000000"
100-
string(4) "0-9]"
101-
string(1) "f"
10288

10389
-- Iteration 4 --
10490
string(18) "-2147483648.000000"
105-
string(1) "f"
10691
string(18) "-2147483648.000000"
107-
string(1) "f"
10892
string(19) " -2147483648.000000"
10993
string(19) "-2147483648.000000 "
11094
string(19) " -2147483648.000000"
11195
string(19) "
11296
-2147483648.000000"
11397
string(18) "-2147483648.000000"
11498
string(30) " -2147483648.000000"
115-
string(4) "0-9]"
116-
string(1) "f"
11799

118100
-- Iteration 5 --
119101
string(18) "-2147483647.000000"
120-
string(1) "f"
121102
string(18) "-2147483647.000000"
122-
string(1) "f"
123103
string(19) " -2147483647.000000"
124104
string(19) "-2147483647.000000 "
125105
string(19) " -2147483647.000000"
126106
string(19) "
127107
-2147483647.000000"
128108
string(18) "-2147483647.000000"
129109
string(30) " -2147483647.000000"
130-
string(4) "0-9]"
131-
string(1) "f"
132110

133111
-- Iteration 6 --
134112
string(17) "2147483647.000000"
135-
string(1) "f"
136113
string(17) "2147483647.000000"
137-
string(1) "f"
138114
string(18) " 2147483647.000000"
139115
string(18) "2147483647.000000 "
140116
string(18) " 2147483647.000000"
141117
string(18) "
142118
2147483647.000000"
143119
string(17) "2147483647.000000"
144120
string(30) " 2147483647.000000"
145-
string(4) "0-9]"
146-
string(1) "f"
147121

148122
-- Iteration 7 --
149123
string(17) "2147483640.000000"
150-
string(1) "f"
151124
string(17) "2147483640.000000"
152-
string(1) "f"
153125
string(18) " 2147483640.000000"
154126
string(18) "2147483640.000000 "
155127
string(18) " 2147483640.000000"
156128
string(18) "
157129
2147483640.000000"
158130
string(17) "2147483640.000000"
159131
string(30) " 2147483640.000000"
160-
string(4) "0-9]"
161-
string(1) "f"
162132

163133
-- Iteration 8 --
164134
string(11) "4667.000000"
165-
string(1) "f"
166135
string(11) "4667.000000"
167-
string(1) "f"
168136
string(12) " 4667.000000"
169137
string(12) "4667.000000 "
170138
string(12) " 4667.000000"
171139
string(12) "
172140
4667.000000"
173141
string(11) "4667.000000"
174142
string(30) " 4667.000000"
175-
string(4) "0-9]"
176-
string(1) "f"
177143

178144
-- Iteration 9 --
179145
string(11) "4779.000000"
180-
string(1) "f"
181146
string(11) "4779.000000"
182-
string(1) "f"
183147
string(12) " 4779.000000"
184148
string(12) "4779.000000 "
185149
string(12) " 4779.000000"
186150
string(12) "
187151
4779.000000"
188152
string(11) "4779.000000"
189153
string(30) " 4779.000000"
190-
string(4) "0-9]"
191-
string(1) "f"
192154

193155
-- Iteration 10 --
194156
string(11) "4095.000000"
195-
string(1) "f"
196157
string(11) "4095.000000"
197-
string(1) "f"
198158
string(12) " 4095.000000"
199159
string(12) "4095.000000 "
200160
string(12) " 4095.000000"
201161
string(12) "
202162
4095.000000"
203163
string(11) "4095.000000"
204164
string(30) " 4095.000000"
205-
string(4) "0-9]"
206-
string(1) "f"
207165

208166
-- Iteration 11 --
209167
string(10) "250.000000"
210-
string(1) "f"
211168
string(10) "250.000000"
212-
string(1) "f"
213169
string(11) " 250.000000"
214170
string(11) "250.000000 "
215171
string(11) " 250.000000"
216172
string(11) "
217173
250.000000"
218174
string(10) "250.000000"
219175
string(30) " 250.000000"
220-
string(4) "0-9]"
221-
string(1) "f"
222176

223177
-- Iteration 12 --
224178
string(18) "-2147483648.000000"
225-
string(1) "f"
226179
string(18) "-2147483648.000000"
227-
string(1) "f"
228180
string(19) " -2147483648.000000"
229181
string(19) "-2147483648.000000 "
230182
string(19) " -2147483648.000000"
231183
string(19) "
232184
-2147483648.000000"
233185
string(18) "-2147483648.000000"
234186
string(30) " -2147483648.000000"
235-
string(4) "0-9]"
236-
string(1) "f"
237187

238188
-- Iteration 13 --
239189
string(17) "2147483647.000000"
240-
string(1) "f"
241190
string(17) "2147483647.000000"
242-
string(1) "f"
243191
string(18) " 2147483647.000000"
244192
string(18) "2147483647.000000 "
245193
string(18) " 2147483647.000000"
246194
string(18) "
247195
2147483647.000000"
248196
string(17) "2147483647.000000"
249197
string(30) " 2147483647.000000"
250-
string(4) "0-9]"
251-
string(1) "f"
252198

253199
-- Iteration 14 --
254200
string(17) "2147483647.000000"
255-
string(1) "f"
256201
string(17) "2147483647.000000"
257-
string(1) "f"
258202
string(18) " 2147483647.000000"
259203
string(18) "2147483647.000000 "
260204
string(18) " 2147483647.000000"
261205
string(18) "
262206
2147483647.000000"
263207
string(17) "2147483647.000000"
264208
string(30) " 2147483647.000000"
265-
string(4) "0-9]"
266-
string(1) "f"
267209

268210
-- Iteration 15 --
269211
string(9) "83.000000"
270-
string(1) "f"
271212
string(9) "83.000000"
272-
string(1) "f"
273213
string(10) " 83.000000"
274214
string(10) "83.000000 "
275215
string(10) " 83.000000"
276216
string(10) "
277217
83.000000"
278218
string(9) "83.000000"
279219
string(30) " 83.000000"
280-
string(4) "0-9]"
281-
string(1) "f"
282220

283221
-- Iteration 16 --
284222
string(8) "1.000000"
285-
string(1) "f"
286223
string(8) "1.000000"
287-
string(1) "f"
288224
string(9) " 1.000000"
289225
string(9) "1.000000 "
290226
string(9) " 1.000000"
291227
string(9) "
292228
1.000000"
293229
string(8) "1.000000"
294230
string(30) " 1.000000"
295-
string(4) "0-9]"
296-
string(1) "f"
297231

298232
-- Iteration 17 --
299233
string(18) "-2147483648.000000"
300-
string(1) "f"
301234
string(18) "-2147483648.000000"
302-
string(1) "f"
303235
string(19) " -2147483648.000000"
304236
string(19) "-2147483648.000000 "
305237
string(19) " -2147483648.000000"
306238
string(19) "
307239
-2147483648.000000"
308240
string(18) "-2147483648.000000"
309241
string(30) " -2147483648.000000"
310-
string(4) "0-9]"
311-
string(1) "f"
312242

313243
-- Iteration 18 --
314244
string(17) "2147483647.000000"
315-
string(1) "f"
316245
string(17) "2147483647.000000"
317-
string(1) "f"
318246
string(18) " 2147483647.000000"
319247
string(18) "2147483647.000000 "
320248
string(18) " 2147483647.000000"
321249
string(18) "
322250
2147483647.000000"
323251
string(17) "2147483647.000000"
324252
string(30) " 2147483647.000000"
325-
string(4) "0-9]"
326-
string(1) "f"
327253
Done
Binary file not shown.
-644 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)