Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openjdk-multiarch-jdk8u
Path: blob/aarch64-shenandoah-jdk8u272-b10/jdk/test/java/lang/reflect/Parameter/BadClassFiles.java
38828 views
1
/*
2
* Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/*
25
* @test
26
* @run main BadClassFiles
27
* @summary The reflection API should throw the correct exceptions.
28
*/
29
import java.lang.Class;
30
import java.lang.reflect.Method;
31
import java.lang.reflect.Parameter;
32
import java.lang.reflect.MalformedParametersException;
33
import java.lang.ClassLoader;
34
import java.lang.ClassNotFoundException;
35
import java.io.File;
36
import java.io.FileOutputStream;
37
import java.io.IOException;
38
39
public class BadClassFiles {
40
private int errors = 0;
41
42
43
/* Class files were created by compiling the following source and
44
* then editing it:
45
*
46
* public class EmptyName {
47
* public void m(int a, int b) {}
48
* }
49
*
50
*/
51
private static final byte[] EmptyName_bytes = {
52
-54,-2,-70,-66,0,0,0,52,
53
0,18,10,0,3,0,15,7,
54
0,16,7,0,17,1,0,6,
55
60,105,110,105,116,62,1,0,
56
3,40,41,86,1,0,4,67,
57
111,100,101,1,0,15,76,105,
58
110,101,78,117,109,98,101,114,
59
84,97,98,108,101,1,0,1,
60
109,1,0,5,40,73,73,41,
61
86,1,0,16,77,101,116,104,
62
111,100,80,97,114,97,109,101,
63
116,101,114,115,1,0,0,1,
64
0,1,98,1,0,10,83,111,
65
117,114,99,101,70,105,108,101,
66
1,0,14,69,109,112,116,121,
67
78,97,109,101,46,106,97,118,
68
97,12,0,4,0,5,1,0,
69
9,69,109,112,116,121,78,97,
70
109,101,1,0,16,106,97,118,
71
97,47,108,97,110,103,47,79,
72
98,106,101,99,116,0,33,0,
73
2,0,3,0,0,0,0,0,
74
2,0,1,0,4,0,5,0,
75
1,0,6,0,0,0,29,0,
76
1,0,1,0,0,0,5,42,
77
-73,0,1,-79,0,0,0,1,
78
0,7,0,0,0,6,0,1,
79
0,0,0,1,0,1,0,8,
80
0,9,0,2,0,6,0,0,
81
0,25,0,0,0,3,0,0,
82
0,1,-79,0,0,0,1,0,
83
7,0,0,0,6,0,1,0,
84
0,0,2,0,10,0,0,0,
85
9,2,0,11,0,0,0,12,
86
0,0,0,1,0,13,0,0,
87
0,2,0,14
88
};
89
90
private static final byte[] BadModifiers_bytes = {
91
-54,-2,-70,-66,0,0,0,52,
92
0,18,10,0,3,0,15,7,
93
0,16,7,0,17,1,0,6,
94
60,105,110,105,116,62,1,0,
95
3,40,41,86,1,0,4,67,
96
111,100,101,1,0,15,76,105,
97
110,101,78,117,109,98,101,114,
98
84,97,98,108,101,1,0,1,
99
109,1,0,5,40,73,73,41,
100
86,1,0,16,77,101,116,104,
101
111,100,80,97,114,97,109,101,
102
116,101,114,115,1,0,1,97,
103
1,0,1,98,1,0,10,83,
104
111,117,114,99,101,70,105,108,
105
101,1,0,17,66,97,100,77,
106
111,100,105,102,105,101,114,115,
107
46,106,97,118,97,12,0,4,
108
0,5,1,0,12,66,97,100,
109
77,111,100,105,102,105,101,114,
110
115,1,0,16,106,97,118,97,
111
47,108,97,110,103,47,79,98,
112
106,101,99,116,0,33,0,2,
113
0,3,0,0,0,0,0,2,
114
0,1,0,4,0,5,0,1,
115
0,6,0,0,0,29,0,1,
116
0,1,0,0,0,5,42,-73,
117
0,1,-79,0,0,0,1,0,
118
7,0,0,0,6,0,1,0,
119
0,0,1,0,1,0,8,0,
120
9,0,2,0,6,0,0,0,
121
25,0,0,0,3,0,0,0,
122
1,-79,0,0,0,1,0,7,
123
0,0,0,6,0,1,0,0,
124
0,2,0,10,0,0,0,9,
125
2,0,11,0,51,51,12,0,
126
0,0,1,0,13,0,0,0,
127
2,0,14
128
};
129
130
private static final byte[] BadNameIndex_bytes = {
131
-54,-2,-70,-66,0,0,0,52,
132
0,18,10,0,3,0,15,7,
133
0,16,7,0,17,1,0,6,
134
60,105,110,105,116,62,1,0,
135
3,40,41,86,1,0,4,67,
136
111,100,101,1,0,15,76,105,
137
110,101,78,117,109,98,101,114,
138
84,97,98,108,101,1,0,1,
139
109,1,0,5,40,73,73,41,
140
86,1,0,16,77,101,116,104,
141
111,100,80,97,114,97,109,101,
142
116,101,114,115,1,0,1,97,
143
1,0,1,98,1,0,10,83,
144
111,117,114,99,101,70,105,108,
145
101,1,0,17,66,97,100,78,
146
97,109,101,73,110,100,101,120,
147
46,106,97,118,97,12,0,4,
148
0,5,1,0,12,66,97,100,
149
78,97,109,101,73,110,100,101,
150
120,1,0,16,106,97,118,97,
151
47,108,97,110,103,47,79,98,
152
106,101,99,116,0,33,0,2,
153
0,3,0,0,0,0,0,2,
154
0,1,0,4,0,5,0,1,
155
0,6,0,0,0,29,0,1,
156
0,1,0,0,0,5,42,-73,
157
0,1,-79,0,0,0,1,0,
158
7,0,0,0,6,0,1,0,
159
0,0,1,0,1,0,8,0,
160
9,0,2,0,6,0,0,0,
161
25,0,0,0,3,0,0,0,
162
1,-79,0,0,0,1,0,7,
163
0,0,0,6,0,1,0,0,
164
0,2,0,10,0,0,0,9,
165
2,0,1,0,0,0,12,0,
166
0,0,1,0,13,0,0,0,
167
2,0,14
168
};
169
170
private static final byte[] NameIndexOutOfBounds_bytes = {
171
-54,-2,-70,-66,0,0,0,52,
172
0,18,10,0,3,0,15,7,
173
0,16,7,0,17,1,0,6,
174
60,105,110,105,116,62,1,0,
175
3,40,41,86,1,0,4,67,
176
111,100,101,1,0,15,76,105,
177
110,101,78,117,109,98,101,114,
178
84,97,98,108,101,1,0,1,
179
109,1,0,5,40,73,73,41,
180
86,1,0,16,77,101,116,104,
181
111,100,80,97,114,97,109,101,
182
116,101,114,115,1,0,1,97,
183
1,0,1,98,1,0,10,83,
184
111,117,114,99,101,70,105,108,
185
101,1,0,25,78,97,109,101,
186
73,110,100,101,120,79,117,116,
187
79,102,66,111,117,110,100,115,
188
46,106,97,118,97,12,0,4,
189
0,5,1,0,20,78,97,109,
190
101,73,110,100,101,120,79,117,
191
116,79,102,66,111,117,110,100,
192
115,1,0,16,106,97,118,97,
193
47,108,97,110,103,47,79,98,
194
106,101,99,116,0,33,0,2,
195
0,3,0,0,0,0,0,2,
196
0,1,0,4,0,5,0,1,
197
0,6,0,0,0,29,0,1,
198
0,1,0,0,0,5,42,-73,
199
0,1,-79,0,0,0,1,0,
200
7,0,0,0,6,0,1,0,
201
0,0,1,0,1,0,8,0,
202
9,0,2,0,6,0,0,0,
203
25,0,0,0,3,0,0,0,
204
1,-79,0,0,0,1,0,7,
205
0,0,0,6,0,1,0,0,
206
0,2,0,10,0,0,0,9,
207
2,0,-1,0,0,0,12,0,
208
0,0,1,0,13,0,0,0,
209
2,0,14
210
211
};
212
213
private static final byte[] ExtraParams_bytes = {
214
-54,-2,-70,-66,0,0,0,52,
215
0,18,10,0,3,0,15,7,
216
0,16,7,0,17,1,0,6,
217
60,105,110,105,116,62,1,0,
218
3,40,41,86,1,0,4,67,
219
111,100,101,1,0,15,76,105,
220
110,101,78,117,109,98,101,114,
221
84,97,98,108,101,1,0,1,
222
109,1,0,5,40,73,73,41,
223
86,1,0,16,77,101,116,104,
224
111,100,80,97,114,97,109,101,
225
116,101,114,115,1,0,1,97,
226
1,0,1,98,1,0,10,83,
227
111,117,114,99,101,70,105,108,
228
101,1,0,16,69,120,116,114,
229
97,80,97,114,97,109,115,46,
230
106,97,118,97,12,0,4,0,
231
5,1,0,11,69,120,116,114,
232
97,80,97,114,97,109,115,1,
233
0,16,106,97,118,97,47,108,
234
97,110,103,47,79,98,106,101,
235
99,116,0,33,0,2,0,3,
236
0,0,0,0,0,2,0,1,
237
0,4,0,5,0,1,0,6,
238
0,0,0,29,0,1,0,1,
239
0,0,0,5,42,-73,0,1,
240
-79,0,0,0,1,0,7,0,
241
0,0,6,0,1,0,0,0,
242
1,0,1,0,8,0,9,0,
243
2,0,6,0,0,0,25,0,
244
0,0,3,0,0,0,1,-79,
245
0,0,0,1,0,7,0,0,
246
0,6,0,1,0,0,0,2,
247
0,10,0,0,0,13,3,0,
248
11,0,0,0,12,0,0,0,
249
11,0,0,0,1,0,13,0,
250
0,0,2,0,14
251
};
252
253
private static final byte[] BadName1_bytes = {
254
-54,-2,-70,-66,0,0,0,52,
255
0,18,10,0,3,0,15,7,
256
0,16,7,0,17,1,0,6,
257
60,105,110,105,116,62,1,0,
258
3,40,41,86,1,0,4,67,
259
111,100,101,1,0,15,76,105,
260
110,101,78,117,109,98,101,114,
261
84,97,98,108,101,1,0,1,
262
109,1,0,5,40,73,73,41,
263
86,1,0,16,77,101,116,104,
264
111,100,80,97,114,97,109,101,
265
116,101,114,115,1,0,1,46,
266
1,0,1,98,1,0,10,83,
267
111,117,114,99,101,70,105,108,
268
101,1,0,13,66,97,100,78,
269
97,109,101,49,46,106,97,118,
270
97,12,0,4,0,5,1,0,
271
8,66,97,100,78,97,109,101,
272
49,1,0,16,106,97,118,97,
273
47,108,97,110,103,47,79,98,
274
106,101,99,116,0,33,0,2,
275
0,3,0,0,0,0,0,2,
276
0,1,0,4,0,5,0,1,
277
0,6,0,0,0,29,0,1,
278
0,1,0,0,0,5,42,-73,
279
0,1,-79,0,0,0,1,0,
280
7,0,0,0,6,0,1,0,
281
0,0,1,0,1,0,8,0,
282
9,0,2,0,6,0,0,0,
283
25,0,0,0,3,0,0,0,
284
1,-79,0,0,0,1,0,7,
285
0,0,0,6,0,1,0,0,
286
0,2,0,10,0,0,0,9,
287
2,0,11,0,0,0,12,0,
288
0,0,1,0,13,0,0,0,
289
2,0,14
290
};
291
292
private static final byte[] BadName2_bytes = {
293
-54,-2,-70,-66,0,0,0,52,
294
0,18,10,0,3,0,15,7,
295
0,16,7,0,17,1,0,6,
296
60,105,110,105,116,62,1,0,
297
3,40,41,86,1,0,4,67,
298
111,100,101,1,0,15,76,105,
299
110,101,78,117,109,98,101,114,
300
84,97,98,108,101,1,0,1,
301
109,1,0,5,40,73,73,41,
302
86,1,0,16,77,101,116,104,
303
111,100,80,97,114,97,109,101,
304
116,101,114,115,1,0,1,91,
305
1,0,1,98,1,0,10,83,
306
111,117,114,99,101,70,105,108,
307
101,1,0,13,66,97,100,78,
308
97,109,101,50,46,106,97,118,
309
97,12,0,4,0,5,1,0,
310
8,66,97,100,78,97,109,101,
311
50,1,0,16,106,97,118,97,
312
47,108,97,110,103,47,79,98,
313
106,101,99,116,0,33,0,2,
314
0,3,0,0,0,0,0,2,
315
0,1,0,4,0,5,0,1,
316
0,6,0,0,0,29,0,1,
317
0,1,0,0,0,5,42,-73,
318
0,1,-79,0,0,0,1,0,
319
7,0,0,0,6,0,1,0,
320
0,0,1,0,1,0,8,0,
321
9,0,2,0,6,0,0,0,
322
25,0,0,0,3,0,0,0,
323
1,-79,0,0,0,1,0,7,
324
0,0,0,6,0,1,0,0,
325
0,2,0,10,0,0,0,9,
326
2,0,11,0,0,0,12,0,
327
0,0,1,0,13,0,0,0,
328
2,0,14
329
};
330
331
private static final byte[] BadName3_bytes = {
332
-54,-2,-70,-66,0,0,0,52,
333
0,18,10,0,3,0,15,7,
334
0,16,7,0,17,1,0,6,
335
60,105,110,105,116,62,1,0,
336
3,40,41,86,1,0,4,67,
337
111,100,101,1,0,15,76,105,
338
110,101,78,117,109,98,101,114,
339
84,97,98,108,101,1,0,1,
340
109,1,0,5,40,73,73,41,
341
86,1,0,16,77,101,116,104,
342
111,100,80,97,114,97,109,101,
343
116,101,114,115,1,0,1,59,
344
1,0,1,98,1,0,10,83,
345
111,117,114,99,101,70,105,108,
346
101,1,0,13,66,97,100,78,
347
97,109,101,51,46,106,97,118,
348
97,12,0,4,0,5,1,0,
349
8,66,97,100,78,97,109,101,
350
51,1,0,16,106,97,118,97,
351
47,108,97,110,103,47,79,98,
352
106,101,99,116,0,33,0,2,
353
0,3,0,0,0,0,0,2,
354
0,1,0,4,0,5,0,1,
355
0,6,0,0,0,29,0,1,
356
0,1,0,0,0,5,42,-73,
357
0,1,-79,0,0,0,1,0,
358
7,0,0,0,6,0,1,0,
359
0,0,1,0,1,0,8,0,
360
9,0,2,0,6,0,0,0,
361
25,0,0,0,3,0,0,0,
362
1,-79,0,0,0,1,0,7,
363
0,0,0,6,0,1,0,0,
364
0,2,0,10,0,0,0,9,
365
2,0,11,0,0,0,12,0,
366
0,0,1,0,13,0,0,0,
367
2,0,14
368
};
369
370
private static final byte[] BadName4_bytes = {
371
-54,-2,-70,-66,0,0,0,52,
372
0,18,10,0,3,0,15,7,
373
0,16,7,0,17,1,0,6,
374
60,105,110,105,116,62,1,0,
375
3,40,41,86,1,0,4,67,
376
111,100,101,1,0,15,76,105,
377
110,101,78,117,109,98,101,114,
378
84,97,98,108,101,1,0,1,
379
109,1,0,5,40,73,73,41,
380
86,1,0,16,77,101,116,104,
381
111,100,80,97,114,97,109,101,
382
116,101,114,115,1,0,1,47,
383
1,0,1,98,1,0,10,83,
384
111,117,114,99,101,70,105,108,
385
101,1,0,13,66,97,100,78,
386
97,109,101,52,46,106,97,118,
387
97,12,0,4,0,5,1,0,
388
8,66,97,100,78,97,109,101,
389
52,1,0,16,106,97,118,97,
390
47,108,97,110,103,47,79,98,
391
106,101,99,116,0,33,0,2,
392
0,3,0,0,0,0,0,2,
393
0,1,0,4,0,5,0,1,
394
0,6,0,0,0,29,0,1,
395
0,1,0,0,0,5,42,-73,
396
0,1,-79,0,0,0,1,0,
397
7,0,0,0,6,0,1,0,
398
0,0,1,0,1,0,8,0,
399
9,0,2,0,6,0,0,0,
400
25,0,0,0,3,0,0,0,
401
1,-79,0,0,0,1,0,7,
402
0,0,0,6,0,1,0,0,
403
0,2,0,10,0,0,0,9,
404
2,0,11,0,0,0,12,0,
405
0,0,1,0,13,0,0,0,
406
2,0,14
407
};
408
409
private static class InMemoryClassLoader extends ClassLoader {
410
public Class<?> defineClass(String name, byte[] b) {
411
return defineClass(name, b, 0, b.length);
412
}
413
};
414
415
private static final InMemoryClassLoader loader = new InMemoryClassLoader();
416
417
private final Class<?>[] classes;
418
419
private BadClassFiles() throws ClassNotFoundException {
420
classes = new Class<?>[] {
421
loader.defineClass("EmptyName", EmptyName_bytes),
422
loader.defineClass("BadModifiers", BadModifiers_bytes),
423
loader.defineClass("BadNameIndex", BadNameIndex_bytes),
424
loader.defineClass("NameIndexOutOfBounds", NameIndexOutOfBounds_bytes),
425
loader.defineClass("ExtraParams", ExtraParams_bytes),
426
// Name with .
427
loader.defineClass("BadName1", BadName1_bytes),
428
// Name with [
429
loader.defineClass("BadName2", BadName2_bytes),
430
// Name with ;
431
loader.defineClass("BadName3", BadName3_bytes),
432
// Name with /
433
loader.defineClass("BadName4", BadName4_bytes)
434
};
435
}
436
437
public static void main(String... args)
438
throws NoSuchMethodException, IOException, ClassNotFoundException {
439
new BadClassFiles().run();
440
}
441
442
public void assertBadParameters(Class<?> cls) throws NoSuchMethodException {
443
try {
444
System.err.println("Trying " + cls);
445
final Method method = cls.getMethod("m", int.class, int.class);
446
final Parameter[] params = method.getParameters();
447
System.err.println("Name " + params[0].getName());
448
System.err.println("Did not see expected exception");
449
errors++;
450
} catch(MalformedParametersException e) {
451
System.err.println("Expected exception seen");
452
}
453
}
454
455
public void run() throws NoSuchMethodException {
456
for (Class<?> cls : classes)
457
assertBadParameters(cls);
458
459
if (errors != 0)
460
throw new RuntimeException(errors + " errors in test");
461
}
462
}
463
464