5a092da08ab902795b7c2b810f8519a7d5487b3e
[platform/framework/web/lwnode.git] /
1 ;;;;;; Invalid UTF-8 import module names
2
3 ;;;; Continuation bytes not preceded by prefixes
4
5 ;; encoding starts with (first) continuation byte
6 (assert_malformed
7   (module binary
8     "\00asm" "\01\00\00\00"
9     "\02\0b"                       ;; import section
10     "\01"                          ;; length 1
11     "\04\74\65\73\74"              ;; "test"
12     "\01\80"                       ;; "\80"
13     "\03"                          ;; GlobalImport
14     "\7f"                          ;; i32
15     "\00"                          ;; immutable
16   )
17   "malformed UTF-8 encoding"
18 )
19
20 ;; encoding starts with (0x8f) continuation byte
21 (assert_malformed
22   (module binary
23     "\00asm" "\01\00\00\00"
24     "\02\0b"                       ;; import section
25     "\01"                          ;; length 1
26     "\04\74\65\73\74"              ;; "test"
27     "\01\8f"                       ;; "\8f"
28     "\03"                          ;; GlobalImport
29     "\7f"                          ;; i32
30     "\00"                          ;; immutable
31   )
32   "malformed UTF-8 encoding"
33 )
34
35 ;; encoding starts with (0x90) continuation byte
36 (assert_malformed
37   (module binary
38     "\00asm" "\01\00\00\00"
39     "\02\0b"                       ;; import section
40     "\01"                          ;; length 1
41     "\04\74\65\73\74"              ;; "test"
42     "\01\90"                       ;; "\90"
43     "\03"                          ;; GlobalImport
44     "\7f"                          ;; i32
45     "\00"                          ;; immutable
46   )
47   "malformed UTF-8 encoding"
48 )
49
50 ;; encoding starts with (0x9f) continuation byte
51 (assert_malformed
52   (module binary
53     "\00asm" "\01\00\00\00"
54     "\02\0b"                       ;; import section
55     "\01"                          ;; length 1
56     "\04\74\65\73\74"              ;; "test"
57     "\01\9f"                       ;; "\9f"
58     "\03"                          ;; GlobalImport
59     "\7f"                          ;; i32
60     "\00"                          ;; immutable
61   )
62   "malformed UTF-8 encoding"
63 )
64
65 ;; encoding starts with (0xa0) continuation byte
66 (assert_malformed
67   (module binary
68     "\00asm" "\01\00\00\00"
69     "\02\0b"                       ;; import section
70     "\01"                          ;; length 1
71     "\04\74\65\73\74"              ;; "test"
72     "\01\a0"                       ;; "\a0"
73     "\03"                          ;; GlobalImport
74     "\7f"                          ;; i32
75     "\00"                          ;; immutable
76   )
77   "malformed UTF-8 encoding"
78 )
79
80 ;; encoding starts with (last) continuation byte
81 (assert_malformed
82   (module binary
83     "\00asm" "\01\00\00\00"
84     "\02\0b"                       ;; import section
85     "\01"                          ;; length 1
86     "\04\74\65\73\74"              ;; "test"
87     "\01\bf"                       ;; "\bf"
88     "\03"                          ;; GlobalImport
89     "\7f"                          ;; i32
90     "\00"                          ;; immutable
91   )
92   "malformed UTF-8 encoding"
93 )
94
95 ;;;; 2-byte sequences
96
97 ;; 2-byte sequence contains 3 bytes
98 (assert_malformed
99   (module binary
100     "\00asm" "\01\00\00\00"
101     "\02\0d"                       ;; import section
102     "\01"                          ;; length 1
103     "\04\74\65\73\74"              ;; "test"
104     "\03\c2\80\80"                 ;; "\c2\80\80"
105     "\03"                          ;; GlobalImport
106     "\7f"                          ;; i32
107     "\00"                          ;; immutable
108   )
109   "malformed UTF-8 encoding"
110 )
111
112 ;; 2-byte sequence contains 1 byte at end of string
113 (assert_malformed
114   (module binary
115     "\00asm" "\01\00\00\00"
116     "\02\0b"                       ;; import section
117     "\01"                          ;; length 1
118     "\04\74\65\73\74"              ;; "test"
119     "\01\c2"                       ;; "\c2"
120     "\03"                          ;; GlobalImport
121     "\7f"                          ;; i32
122     "\00"                          ;; immutable
123   )
124   "malformed UTF-8 encoding"
125 )
126
127 ;; 2-byte sequence contains 1 byte
128 (assert_malformed
129   (module binary
130     "\00asm" "\01\00\00\00"
131     "\02\0c"                       ;; import section
132     "\01"                          ;; length 1
133     "\04\74\65\73\74"              ;; "test"
134     "\02\c2\2e"                    ;; "\c2."
135     "\03"                          ;; GlobalImport
136     "\7f"                          ;; i32
137     "\00"                          ;; immutable
138   )
139   "malformed UTF-8 encoding"
140 )
141
142 ;;;; 2-byte sequence contents
143
144 ;; overlong encoding after 0xc0 prefix
145 (assert_malformed
146   (module binary
147     "\00asm" "\01\00\00\00"
148     "\02\0c"                       ;; import section
149     "\01"                          ;; length 1
150     "\04\74\65\73\74"              ;; "test"
151     "\02\c0\80"                    ;; "\c0\80"
152     "\03"                          ;; GlobalImport
153     "\7f"                          ;; i32
154     "\00"                          ;; immutable
155   )
156   "malformed UTF-8 encoding"
157 )
158
159 ;; overlong encoding after 0xc0 prefix
160 (assert_malformed
161   (module binary
162     "\00asm" "\01\00\00\00"
163     "\02\0c"                       ;; import section
164     "\01"                          ;; length 1
165     "\04\74\65\73\74"              ;; "test"
166     "\02\c0\bf"                    ;; "\c0\bf"
167     "\03"                          ;; GlobalImport
168     "\7f"                          ;; i32
169     "\00"                          ;; immutable
170   )
171   "malformed UTF-8 encoding"
172 )
173
174 ;; overlong encoding after 0xc1 prefix
175 (assert_malformed
176   (module binary
177     "\00asm" "\01\00\00\00"
178     "\02\0c"                       ;; import section
179     "\01"                          ;; length 1
180     "\04\74\65\73\74"              ;; "test"
181     "\02\c1\80"                    ;; "\c1\80"
182     "\03"                          ;; GlobalImport
183     "\7f"                          ;; i32
184     "\00"                          ;; immutable
185   )
186   "malformed UTF-8 encoding"
187 )
188
189 ;; overlong encoding after 0xc1 prefix
190 (assert_malformed
191   (module binary
192     "\00asm" "\01\00\00\00"
193     "\02\0c"                       ;; import section
194     "\01"                          ;; length 1
195     "\04\74\65\73\74"              ;; "test"
196     "\02\c1\bf"                    ;; "\c1\bf"
197     "\03"                          ;; GlobalImport
198     "\7f"                          ;; i32
199     "\00"                          ;; immutable
200   )
201   "malformed UTF-8 encoding"
202 )
203
204 ;; byte after (first) 2-byte prefix not a contination byte
205 (assert_malformed
206   (module binary
207     "\00asm" "\01\00\00\00"
208     "\02\0c"                       ;; import section
209     "\01"                          ;; length 1
210     "\04\74\65\73\74"              ;; "test"
211     "\02\c2\00"                    ;; "\c2\00"
212     "\03"                          ;; GlobalImport
213     "\7f"                          ;; i32
214     "\00"                          ;; immutable
215   )
216   "malformed UTF-8 encoding"
217 )
218
219 ;; byte after (first) 2-byte prefix not a continuation byte
220 (assert_malformed
221   (module binary
222     "\00asm" "\01\00\00\00"
223     "\02\0c"                       ;; import section
224     "\01"                          ;; length 1
225     "\04\74\65\73\74"              ;; "test"
226     "\02\c2\7f"                    ;; "\c2\7f"
227     "\03"                          ;; GlobalImport
228     "\7f"                          ;; i32
229     "\00"                          ;; immutable
230   )
231   "malformed UTF-8 encoding"
232 )
233
234 ;; byte after (first) 2-byte prefix not a continuation byte
235 (assert_malformed
236   (module binary
237     "\00asm" "\01\00\00\00"
238     "\02\0c"                       ;; import section
239     "\01"                          ;; length 1
240     "\04\74\65\73\74"              ;; "test"
241     "\02\c2\c0"                    ;; "\c2\c0"
242     "\03"                          ;; GlobalImport
243     "\7f"                          ;; i32
244     "\00"                          ;; immutable
245   )
246   "malformed UTF-8 encoding"
247 )
248
249 ;; byte after (first) 2-byte prefix not a continuation byte
250 (assert_malformed
251   (module binary
252     "\00asm" "\01\00\00\00"
253     "\02\0c"                       ;; import section
254     "\01"                          ;; length 1
255     "\04\74\65\73\74"              ;; "test"
256     "\02\c2\fd"                    ;; "\c2\fd"
257     "\03"                          ;; GlobalImport
258     "\7f"                          ;; i32
259     "\00"                          ;; immutable
260   )
261   "malformed UTF-8 encoding"
262 )
263
264 ;; byte after (last) 2-byte prefix not a continuation byte
265 (assert_malformed
266   (module binary
267     "\00asm" "\01\00\00\00"
268     "\02\0c"                       ;; import section
269     "\01"                          ;; length 1
270     "\04\74\65\73\74"              ;; "test"
271     "\02\df\00"                    ;; "\df\00"
272     "\03"                          ;; GlobalImport
273     "\7f"                          ;; i32
274     "\00"                          ;; immutable
275   )
276   "malformed UTF-8 encoding"
277 )
278
279 ;; byte after (last) 2-byte prefix not a continuation byte
280 (assert_malformed
281   (module binary
282     "\00asm" "\01\00\00\00"
283     "\02\0c"                       ;; import section
284     "\01"                          ;; length 1
285     "\04\74\65\73\74"              ;; "test"
286     "\02\df\7f"                    ;; "\df\7f"
287     "\03"                          ;; GlobalImport
288     "\7f"                          ;; i32
289     "\00"                          ;; immutable
290   )
291   "malformed UTF-8 encoding"
292 )
293
294 ;; byte after (last) 2-byte prefix not a continuation byte
295 (assert_malformed
296   (module binary
297     "\00asm" "\01\00\00\00"
298     "\02\0c"                       ;; import section
299     "\01"                          ;; length 1
300     "\04\74\65\73\74"              ;; "test"
301     "\02\df\c0"                    ;; "\df\c0"
302     "\03"                          ;; GlobalImport
303     "\7f"                          ;; i32
304     "\00"                          ;; immutable
305   )
306   "malformed UTF-8 encoding"
307 )
308
309 ;; byte after (last) 2-byte prefix not a continuation byte
310 (assert_malformed
311   (module binary
312     "\00asm" "\01\00\00\00"
313     "\02\0c"                       ;; import section
314     "\01"                          ;; length 1
315     "\04\74\65\73\74"              ;; "test"
316     "\02\df\fd"                    ;; "\df\fd"
317     "\03"                          ;; GlobalImport
318     "\7f"                          ;; i32
319     "\00"                          ;; immutable
320   )
321   "malformed UTF-8 encoding"
322 )
323
324 ;;;; 3-byte sequences
325
326 ;; 3-byte sequence contains 4 bytes
327 (assert_malformed
328   (module binary
329     "\00asm" "\01\00\00\00"
330     "\02\0e"                       ;; import section
331     "\01"                          ;; length 1
332     "\04\74\65\73\74"              ;; "test"
333     "\04\e1\80\80\80"              ;; "\e1\80\80\80"
334     "\03"                          ;; GlobalImport
335     "\7f"                          ;; i32
336     "\00"                          ;; immutable
337   )
338   "malformed UTF-8 encoding"
339 )
340
341 ;; 3-byte sequence contains 2 bytes at end of string
342 (assert_malformed
343   (module binary
344     "\00asm" "\01\00\00\00"
345     "\02\0c"                       ;; import section
346     "\01"                          ;; length 1
347     "\04\74\65\73\74"              ;; "test"
348     "\02\e1\80"                    ;; "\e1\80"
349     "\03"                          ;; GlobalImport
350     "\7f"                          ;; i32
351     "\00"                          ;; immutable
352   )
353   "malformed UTF-8 encoding"
354 )
355
356 ;; 3-byte sequence contains 2 bytes
357 (assert_malformed
358   (module binary
359     "\00asm" "\01\00\00\00"
360     "\02\0d"                       ;; import section
361     "\01"                          ;; length 1
362     "\04\74\65\73\74"              ;; "test"
363     "\03\e1\80\2e"                 ;; "\e1\80."
364     "\03"                          ;; GlobalImport
365     "\7f"                          ;; i32
366     "\00"                          ;; immutable
367   )
368   "malformed UTF-8 encoding"
369 )
370
371 ;; 3-byte sequence contains 1 byte at end of string
372 (assert_malformed
373   (module binary
374     "\00asm" "\01\00\00\00"
375     "\02\0b"                       ;; import section
376     "\01"                          ;; length 1
377     "\04\74\65\73\74"              ;; "test"
378     "\01\e1"                       ;; "\e1"
379     "\03"                          ;; GlobalImport
380     "\7f"                          ;; i32
381     "\00"                          ;; immutable
382   )
383   "malformed UTF-8 encoding"
384 )
385
386 ;; 3-byte sequence contains 1 byte
387 (assert_malformed
388   (module binary
389     "\00asm" "\01\00\00\00"
390     "\02\0c"                       ;; import section
391     "\01"                          ;; length 1
392     "\04\74\65\73\74"              ;; "test"
393     "\02\e1\2e"                    ;; "\e1."
394     "\03"                          ;; GlobalImport
395     "\7f"                          ;; i32
396     "\00"                          ;; immutable
397   )
398   "malformed UTF-8 encoding"
399 )
400
401 ;;;; 3-byte sequence contents
402
403 ;; first byte after (0xe0) 3-byte prefix not a continuation byte
404 (assert_malformed
405   (module binary
406     "\00asm" "\01\00\00\00"
407     "\02\0d"                       ;; import section
408     "\01"                          ;; length 1
409     "\04\74\65\73\74"              ;; "test"
410     "\03\e0\00\a0"                 ;; "\e0\00\a0"
411     "\03"                          ;; GlobalImport
412     "\7f"                          ;; i32
413     "\00"                          ;; immutable
414   )
415   "malformed UTF-8 encoding"
416 )
417
418 ;; first byte after (0xe0) 3-byte prefix not a continuation byte
419 (assert_malformed
420   (module binary
421     "\00asm" "\01\00\00\00"
422     "\02\0d"                       ;; import section
423     "\01"                          ;; length 1
424     "\04\74\65\73\74"              ;; "test"
425     "\03\e0\7f\a0"                 ;; "\e0\7f\a0"
426     "\03"                          ;; GlobalImport
427     "\7f"                          ;; i32
428     "\00"                          ;; immutable
429   )
430   "malformed UTF-8 encoding"
431 )
432
433 ;; overlong encoding after 0xe0 prefix
434 (assert_malformed
435   (module binary
436     "\00asm" "\01\00\00\00"
437     "\02\0d"                       ;; import section
438     "\01"                          ;; length 1
439     "\04\74\65\73\74"              ;; "test"
440     "\03\e0\80\80"                 ;; "\e0\80\80"
441     "\03"                          ;; GlobalImport
442     "\7f"                          ;; i32
443     "\00"                          ;; immutable
444   )
445   "malformed UTF-8 encoding"
446 )
447
448 ;; overlong encoding after 0xe0 prefix
449 (assert_malformed
450   (module binary
451     "\00asm" "\01\00\00\00"
452     "\02\0d"                       ;; import section
453     "\01"                          ;; length 1
454     "\04\74\65\73\74"              ;; "test"
455     "\03\e0\80\a0"                 ;; "\e0\80\a0"
456     "\03"                          ;; GlobalImport
457     "\7f"                          ;; i32
458     "\00"                          ;; immutable
459   )
460   "malformed UTF-8 encoding"
461 )
462
463 ;; overlong encoding after 0xe0 prefix
464 (assert_malformed
465   (module binary
466     "\00asm" "\01\00\00\00"
467     "\02\0d"                       ;; import section
468     "\01"                          ;; length 1
469     "\04\74\65\73\74"              ;; "test"
470     "\03\e0\9f\a0"                 ;; "\e0\9f\a0"
471     "\03"                          ;; GlobalImport
472     "\7f"                          ;; i32
473     "\00"                          ;; immutable
474   )
475   "malformed UTF-8 encoding"
476 )
477
478 ;; overlong encoding after 0xe0 prefix
479 (assert_malformed
480   (module binary
481     "\00asm" "\01\00\00\00"
482     "\02\0d"                       ;; import section
483     "\01"                          ;; length 1
484     "\04\74\65\73\74"              ;; "test"
485     "\03\e0\9f\bf"                 ;; "\e0\9f\bf"
486     "\03"                          ;; GlobalImport
487     "\7f"                          ;; i32
488     "\00"                          ;; immutable
489   )
490   "malformed UTF-8 encoding"
491 )
492
493 ;; first byte after (0xe0) 3-byte prefix not a continuation byte
494 (assert_malformed
495   (module binary
496     "\00asm" "\01\00\00\00"
497     "\02\0d"                       ;; import section
498     "\01"                          ;; length 1
499     "\04\74\65\73\74"              ;; "test"
500     "\03\e0\c0\a0"                 ;; "\e0\c0\a0"
501     "\03"                          ;; GlobalImport
502     "\7f"                          ;; i32
503     "\00"                          ;; immutable
504   )
505   "malformed UTF-8 encoding"
506 )
507
508 ;; first byte after (0xe0) 3-byte prefix not a continuation byte
509 (assert_malformed
510   (module binary
511     "\00asm" "\01\00\00\00"
512     "\02\0d"                       ;; import section
513     "\01"                          ;; length 1
514     "\04\74\65\73\74"              ;; "test"
515     "\03\e0\fd\a0"                 ;; "\e0\fd\a0"
516     "\03"                          ;; GlobalImport
517     "\7f"                          ;; i32
518     "\00"                          ;; immutable
519   )
520   "malformed UTF-8 encoding"
521 )
522
523 ;; first byte after (first normal) 3-byte prefix not a continuation byte
524 (assert_malformed
525   (module binary
526     "\00asm" "\01\00\00\00"
527     "\02\0d"                       ;; import section
528     "\01"                          ;; length 1
529     "\04\74\65\73\74"              ;; "test"
530     "\03\e1\00\80"                 ;; "\e1\00\80"
531     "\03"                          ;; GlobalImport
532     "\7f"                          ;; i32
533     "\00"                          ;; immutable
534   )
535   "malformed UTF-8 encoding"
536 )
537
538 ;; first byte after (first normal) 3-byte prefix not a continuation byte
539 (assert_malformed
540   (module binary
541     "\00asm" "\01\00\00\00"
542     "\02\0d"                       ;; import section
543     "\01"                          ;; length 1
544     "\04\74\65\73\74"              ;; "test"
545     "\03\e1\7f\80"                 ;; "\e1\7f\80"
546     "\03"                          ;; GlobalImport
547     "\7f"                          ;; i32
548     "\00"                          ;; immutable
549   )
550   "malformed UTF-8 encoding"
551 )
552
553 ;; first byte after (first normal) 3-byte prefix not a continuation byte
554 (assert_malformed
555   (module binary
556     "\00asm" "\01\00\00\00"
557     "\02\0d"                       ;; import section
558     "\01"                          ;; length 1
559     "\04\74\65\73\74"              ;; "test"
560     "\03\e1\c0\80"                 ;; "\e1\c0\80"
561     "\03"                          ;; GlobalImport
562     "\7f"                          ;; i32
563     "\00"                          ;; immutable
564   )
565   "malformed UTF-8 encoding"
566 )
567
568 ;; first byte after (first normal) 3-byte prefix not a continuation byte
569 (assert_malformed
570   (module binary
571     "\00asm" "\01\00\00\00"
572     "\02\0d"                       ;; import section
573     "\01"                          ;; length 1
574     "\04\74\65\73\74"              ;; "test"
575     "\03\e1\fd\80"                 ;; "\e1\fd\80"
576     "\03"                          ;; GlobalImport
577     "\7f"                          ;; i32
578     "\00"                          ;; immutable
579   )
580   "malformed UTF-8 encoding"
581 )
582
583 ;; first byte after (normal) 3-byte prefix not a continuation byte
584 (assert_malformed
585   (module binary
586     "\00asm" "\01\00\00\00"
587     "\02\0d"                       ;; import section
588     "\01"                          ;; length 1
589     "\04\74\65\73\74"              ;; "test"
590     "\03\ec\00\80"                 ;; "\ec\00\80"
591     "\03"                          ;; GlobalImport
592     "\7f"                          ;; i32
593     "\00"                          ;; immutable
594   )
595   "malformed UTF-8 encoding"
596 )
597
598 ;; first byte after (normal) 3-byte prefix not a continuation byte
599 (assert_malformed
600   (module binary
601     "\00asm" "\01\00\00\00"
602     "\02\0d"                       ;; import section
603     "\01"                          ;; length 1
604     "\04\74\65\73\74"              ;; "test"
605     "\03\ec\7f\80"                 ;; "\ec\7f\80"
606     "\03"                          ;; GlobalImport
607     "\7f"                          ;; i32
608     "\00"                          ;; immutable
609   )
610   "malformed UTF-8 encoding"
611 )
612
613 ;; first byte after (normal) 3-byte prefix not a continuation byte
614 (assert_malformed
615   (module binary
616     "\00asm" "\01\00\00\00"
617     "\02\0d"                       ;; import section
618     "\01"                          ;; length 1
619     "\04\74\65\73\74"              ;; "test"
620     "\03\ec\c0\80"                 ;; "\ec\c0\80"
621     "\03"                          ;; GlobalImport
622     "\7f"                          ;; i32
623     "\00"                          ;; immutable
624   )
625   "malformed UTF-8 encoding"
626 )
627
628 ;; first byte after (normal) 3-byte prefix not a continuation byte
629 (assert_malformed
630   (module binary
631     "\00asm" "\01\00\00\00"
632     "\02\0d"                       ;; import section
633     "\01"                          ;; length 1
634     "\04\74\65\73\74"              ;; "test"
635     "\03\ec\fd\80"                 ;; "\ec\fd\80"
636     "\03"                          ;; GlobalImport
637     "\7f"                          ;; i32
638     "\00"                          ;; immutable
639   )
640   "malformed UTF-8 encoding"
641 )
642
643 ;; first byte after (0xed) 3-byte prefix not a continuation byte
644 (assert_malformed
645   (module binary
646     "\00asm" "\01\00\00\00"
647     "\02\0d"                       ;; import section
648     "\01"                          ;; length 1
649     "\04\74\65\73\74"              ;; "test"
650     "\03\ed\00\80"                 ;; "\ed\00\80"
651     "\03"                          ;; GlobalImport
652     "\7f"                          ;; i32
653     "\00"                          ;; immutable
654   )
655   "malformed UTF-8 encoding"
656 )
657
658 ;; first byte after (0xed) 3-byte prefix not a continuation byte
659 (assert_malformed
660   (module binary
661     "\00asm" "\01\00\00\00"
662     "\02\0d"                       ;; import section
663     "\01"                          ;; length 1
664     "\04\74\65\73\74"              ;; "test"
665     "\03\ed\7f\80"                 ;; "\ed\7f\80"
666     "\03"                          ;; GlobalImport
667     "\7f"                          ;; i32
668     "\00"                          ;; immutable
669   )
670   "malformed UTF-8 encoding"
671 )
672
673 ;; byte sequence reserved for UTF-16 surrogate half
674 (assert_malformed
675   (module binary
676     "\00asm" "\01\00\00\00"
677     "\02\0d"                       ;; import section
678     "\01"                          ;; length 1
679     "\04\74\65\73\74"              ;; "test"
680     "\03\ed\a0\80"                 ;; "\ed\a0\80"
681     "\03"                          ;; GlobalImport
682     "\7f"                          ;; i32
683     "\00"                          ;; immutable
684   )
685   "malformed UTF-8 encoding"
686 )
687
688 ;; byte sequence reserved for UTF-16 surrogate half
689 (assert_malformed
690   (module binary
691     "\00asm" "\01\00\00\00"
692     "\02\0d"                       ;; import section
693     "\01"                          ;; length 1
694     "\04\74\65\73\74"              ;; "test"
695     "\03\ed\a0\bf"                 ;; "\ed\a0\bf"
696     "\03"                          ;; GlobalImport
697     "\7f"                          ;; i32
698     "\00"                          ;; immutable
699   )
700   "malformed UTF-8 encoding"
701 )
702
703 ;; byte sequence reserved for UTF-16 surrogate half
704 (assert_malformed
705   (module binary
706     "\00asm" "\01\00\00\00"
707     "\02\0d"                       ;; import section
708     "\01"                          ;; length 1
709     "\04\74\65\73\74"              ;; "test"
710     "\03\ed\bf\80"                 ;; "\ed\bf\80"
711     "\03"                          ;; GlobalImport
712     "\7f"                          ;; i32
713     "\00"                          ;; immutable
714   )
715   "malformed UTF-8 encoding"
716 )
717
718 ;; byte sequence reserved for UTF-16 surrogate half
719 (assert_malformed
720   (module binary
721     "\00asm" "\01\00\00\00"
722     "\02\0d"                       ;; import section
723     "\01"                          ;; length 1
724     "\04\74\65\73\74"              ;; "test"
725     "\03\ed\bf\bf"                 ;; "\ed\bf\bf"
726     "\03"                          ;; GlobalImport
727     "\7f"                          ;; i32
728     "\00"                          ;; immutable
729   )
730   "malformed UTF-8 encoding"
731 )
732
733 ;; first byte after (0xed) 3-byte prefix not a continuation byte
734 (assert_malformed
735   (module binary
736     "\00asm" "\01\00\00\00"
737     "\02\0d"                       ;; import section
738     "\01"                          ;; length 1
739     "\04\74\65\73\74"              ;; "test"
740     "\03\ed\c0\80"                 ;; "\ed\c0\80"
741     "\03"                          ;; GlobalImport
742     "\7f"                          ;; i32
743     "\00"                          ;; immutable
744   )
745   "malformed UTF-8 encoding"
746 )
747
748 ;; first byte after (0xed) 3-byte prefix not a continuation byte
749 (assert_malformed
750   (module binary
751     "\00asm" "\01\00\00\00"
752     "\02\0d"                       ;; import section
753     "\01"                          ;; length 1
754     "\04\74\65\73\74"              ;; "test"
755     "\03\ed\fd\80"                 ;; "\ed\fd\80"
756     "\03"                          ;; GlobalImport
757     "\7f"                          ;; i32
758     "\00"                          ;; immutable
759   )
760   "malformed UTF-8 encoding"
761 )
762
763 ;; first byte after (normal) 3-byte prefix not a continuation byte
764 (assert_malformed
765   (module binary
766     "\00asm" "\01\00\00\00"
767     "\02\0d"                       ;; import section
768     "\01"                          ;; length 1
769     "\04\74\65\73\74"              ;; "test"
770     "\03\ee\00\80"                 ;; "\ee\00\80"
771     "\03"                          ;; GlobalImport
772     "\7f"                          ;; i32
773     "\00"                          ;; immutable
774   )
775   "malformed UTF-8 encoding"
776 )
777
778 ;; first byte after (normal) 3-byte prefix not a continuation byte
779 (assert_malformed
780   (module binary
781     "\00asm" "\01\00\00\00"
782     "\02\0d"                       ;; import section
783     "\01"                          ;; length 1
784     "\04\74\65\73\74"              ;; "test"
785     "\03\ee\7f\80"                 ;; "\ee\7f\80"
786     "\03"                          ;; GlobalImport
787     "\7f"                          ;; i32
788     "\00"                          ;; immutable
789   )
790   "malformed UTF-8 encoding"
791 )
792
793 ;; first byte after (normal) 3-byte prefix not a continuation byte
794 (assert_malformed
795   (module binary
796     "\00asm" "\01\00\00\00"
797     "\02\0d"                       ;; import section
798     "\01"                          ;; length 1
799     "\04\74\65\73\74"              ;; "test"
800     "\03\ee\c0\80"                 ;; "\ee\c0\80"
801     "\03"                          ;; GlobalImport
802     "\7f"                          ;; i32
803     "\00"                          ;; immutable
804   )
805   "malformed UTF-8 encoding"
806 )
807
808 ;; first byte after (normal) 3-byte prefix not a continuation byte
809 (assert_malformed
810   (module binary
811     "\00asm" "\01\00\00\00"
812     "\02\0d"                       ;; import section
813     "\01"                          ;; length 1
814     "\04\74\65\73\74"              ;; "test"
815     "\03\ee\fd\80"                 ;; "\ee\fd\80"
816     "\03"                          ;; GlobalImport
817     "\7f"                          ;; i32
818     "\00"                          ;; immutable
819   )
820   "malformed UTF-8 encoding"
821 )
822
823 ;; first byte after (last normal) 3-byte prefix not a continuation byte
824 (assert_malformed
825   (module binary
826     "\00asm" "\01\00\00\00"
827     "\02\0d"                       ;; import section
828     "\01"                          ;; length 1
829     "\04\74\65\73\74"              ;; "test"
830     "\03\ef\00\80"                 ;; "\ef\00\80"
831     "\03"                          ;; GlobalImport
832     "\7f"                          ;; i32
833     "\00"                          ;; immutable
834   )
835   "malformed UTF-8 encoding"
836 )
837
838 ;; first byte after (last normal) 3-byte prefix not a continuation byte
839 (assert_malformed
840   (module binary
841     "\00asm" "\01\00\00\00"
842     "\02\0d"                       ;; import section
843     "\01"                          ;; length 1
844     "\04\74\65\73\74"              ;; "test"
845     "\03\ef\7f\80"                 ;; "\ef\7f\80"
846     "\03"                          ;; GlobalImport
847     "\7f"                          ;; i32
848     "\00"                          ;; immutable
849   )
850   "malformed UTF-8 encoding"
851 )
852
853 ;; first byte after (last normal) 3-byte prefix not a continuation byte
854 (assert_malformed
855   (module binary
856     "\00asm" "\01\00\00\00"
857     "\02\0d"                       ;; import section
858     "\01"                          ;; length 1
859     "\04\74\65\73\74"              ;; "test"
860     "\03\ef\c0\80"                 ;; "\ef\c0\80"
861     "\03"                          ;; GlobalImport
862     "\7f"                          ;; i32
863     "\00"                          ;; immutable
864   )
865   "malformed UTF-8 encoding"
866 )
867
868 ;; first byte after (last normal) 3-byte prefix not a continuation byte
869 (assert_malformed
870   (module binary
871     "\00asm" "\01\00\00\00"
872     "\02\0d"                       ;; import section
873     "\01"                          ;; length 1
874     "\04\74\65\73\74"              ;; "test"
875     "\03\ef\fd\80"                 ;; "\ef\fd\80"
876     "\03"                          ;; GlobalImport
877     "\7f"                          ;; i32
878     "\00"                          ;; immutable
879   )
880   "malformed UTF-8 encoding"
881 )
882
883 ;;;; 3-byte sequence contents (third byte)
884
885 ;; second byte after (0xe0) 3-byte prefix not a continuation byte
886 (assert_malformed
887   (module binary
888     "\00asm" "\01\00\00\00"
889     "\02\0d"                       ;; import section
890     "\01"                          ;; length 1
891     "\04\74\65\73\74"              ;; "test"
892     "\03\e0\a0\00"                 ;; "\e0\a0\00"
893     "\03"                          ;; GlobalImport
894     "\7f"                          ;; i32
895     "\00"                          ;; immutable
896   )
897   "malformed UTF-8 encoding"
898 )
899
900 ;; second byte after (0xe0) 3-byte prefix not a continuation byte
901 (assert_malformed
902   (module binary
903     "\00asm" "\01\00\00\00"
904     "\02\0d"                       ;; import section
905     "\01"                          ;; length 1
906     "\04\74\65\73\74"              ;; "test"
907     "\03\e0\a0\7f"                 ;; "\e0\a0\7f"
908     "\03"                          ;; GlobalImport
909     "\7f"                          ;; i32
910     "\00"                          ;; immutable
911   )
912   "malformed UTF-8 encoding"
913 )
914
915 ;; second byte after (0xe0) 3-byte prefix not a continuation byte
916 (assert_malformed
917   (module binary
918     "\00asm" "\01\00\00\00"
919     "\02\0d"                       ;; import section
920     "\01"                          ;; length 1
921     "\04\74\65\73\74"              ;; "test"
922     "\03\e0\a0\c0"                 ;; "\e0\a0\c0"
923     "\03"                          ;; GlobalImport
924     "\7f"                          ;; i32
925     "\00"                          ;; immutable
926   )
927   "malformed UTF-8 encoding"
928 )
929
930 ;; second byte after (0xe0) 3-byte prefix not a continuation byte
931 (assert_malformed
932   (module binary
933     "\00asm" "\01\00\00\00"
934     "\02\0d"                       ;; import section
935     "\01"                          ;; length 1
936     "\04\74\65\73\74"              ;; "test"
937     "\03\e0\a0\fd"                 ;; "\e0\a0\fd"
938     "\03"                          ;; GlobalImport
939     "\7f"                          ;; i32
940     "\00"                          ;; immutable
941   )
942   "malformed UTF-8 encoding"
943 )
944
945 ;; second byte after (first normal) 3-byte prefix not a continuation byte
946 (assert_malformed
947   (module binary
948     "\00asm" "\01\00\00\00"
949     "\02\0d"                       ;; import section
950     "\01"                          ;; length 1
951     "\04\74\65\73\74"              ;; "test"
952     "\03\e1\80\00"                 ;; "\e1\80\00"
953     "\03"                          ;; GlobalImport
954     "\7f"                          ;; i32
955     "\00"                          ;; immutable
956   )
957   "malformed UTF-8 encoding"
958 )
959
960 ;; second byte after (first normal) 3-byte prefix not a continuation byte
961 (assert_malformed
962   (module binary
963     "\00asm" "\01\00\00\00"
964     "\02\0d"                       ;; import section
965     "\01"                          ;; length 1
966     "\04\74\65\73\74"              ;; "test"
967     "\03\e1\80\7f"                 ;; "\e1\80\7f"
968     "\03"                          ;; GlobalImport
969     "\7f"                          ;; i32
970     "\00"                          ;; immutable
971   )
972   "malformed UTF-8 encoding"
973 )
974
975 ;; second byte after (first normal) 3-byte prefix not a continuation byte
976 (assert_malformed
977   (module binary
978     "\00asm" "\01\00\00\00"
979     "\02\0d"                       ;; import section
980     "\01"                          ;; length 1
981     "\04\74\65\73\74"              ;; "test"
982     "\03\e1\80\c0"                 ;; "\e1\80\c0"
983     "\03"                          ;; GlobalImport
984     "\7f"                          ;; i32
985     "\00"                          ;; immutable
986   )
987   "malformed UTF-8 encoding"
988 )
989
990 ;; second byte after (first normal) 3-byte prefix not a continuation byte
991 (assert_malformed
992   (module binary
993     "\00asm" "\01\00\00\00"
994     "\02\0d"                       ;; import section
995     "\01"                          ;; length 1
996     "\04\74\65\73\74"              ;; "test"
997     "\03\e1\80\fd"                 ;; "\e1\80\fd"
998     "\03"                          ;; GlobalImport
999     "\7f"                          ;; i32
1000     "\00"                          ;; immutable
1001   )
1002   "malformed UTF-8 encoding"
1003 )
1004
1005 ;; second byte after (normal) 3-byte prefix not a continuation byte
1006 (assert_malformed
1007   (module binary
1008     "\00asm" "\01\00\00\00"
1009     "\02\0d"                       ;; import section
1010     "\01"                          ;; length 1
1011     "\04\74\65\73\74"              ;; "test"
1012     "\03\ec\80\00"                 ;; "\ec\80\00"
1013     "\03"                          ;; GlobalImport
1014     "\7f"                          ;; i32
1015     "\00"                          ;; immutable
1016   )
1017   "malformed UTF-8 encoding"
1018 )
1019
1020 ;; second byte after (normal) 3-byte prefix not a continuation byte
1021 (assert_malformed
1022   (module binary
1023     "\00asm" "\01\00\00\00"
1024     "\02\0d"                       ;; import section
1025     "\01"                          ;; length 1
1026     "\04\74\65\73\74"              ;; "test"
1027     "\03\ec\80\7f"                 ;; "\ec\80\7f"
1028     "\03"                          ;; GlobalImport
1029     "\7f"                          ;; i32
1030     "\00"                          ;; immutable
1031   )
1032   "malformed UTF-8 encoding"
1033 )
1034
1035 ;; second byte after (normal) 3-byte prefix not a continuation byte
1036 (assert_malformed
1037   (module binary
1038     "\00asm" "\01\00\00\00"
1039     "\02\0d"                       ;; import section
1040     "\01"                          ;; length 1
1041     "\04\74\65\73\74"              ;; "test"
1042     "\03\ec\80\c0"                 ;; "\ec\80\c0"
1043     "\03"                          ;; GlobalImport
1044     "\7f"                          ;; i32
1045     "\00"                          ;; immutable
1046   )
1047   "malformed UTF-8 encoding"
1048 )
1049
1050 ;; second byte after (normal) 3-byte prefix not a continuation byte
1051 (assert_malformed
1052   (module binary
1053     "\00asm" "\01\00\00\00"
1054     "\02\0d"                       ;; import section
1055     "\01"                          ;; length 1
1056     "\04\74\65\73\74"              ;; "test"
1057     "\03\ec\80\fd"                 ;; "\ec\80\fd"
1058     "\03"                          ;; GlobalImport
1059     "\7f"                          ;; i32
1060     "\00"                          ;; immutable
1061   )
1062   "malformed UTF-8 encoding"
1063 )
1064
1065 ;; second byte after (0xed) 3-byte prefix not a continuation byte
1066 (assert_malformed
1067   (module binary
1068     "\00asm" "\01\00\00\00"
1069     "\02\0d"                       ;; import section
1070     "\01"                          ;; length 1
1071     "\04\74\65\73\74"              ;; "test"
1072     "\03\ed\80\00"                 ;; "\ed\80\00"
1073     "\03"                          ;; GlobalImport
1074     "\7f"                          ;; i32
1075     "\00"                          ;; immutable
1076   )
1077   "malformed UTF-8 encoding"
1078 )
1079
1080 ;; second byte after (0xed) 3-byte prefix not a continuation byte
1081 (assert_malformed
1082   (module binary
1083     "\00asm" "\01\00\00\00"
1084     "\02\0d"                       ;; import section
1085     "\01"                          ;; length 1
1086     "\04\74\65\73\74"              ;; "test"
1087     "\03\ed\80\7f"                 ;; "\ed\80\7f"
1088     "\03"                          ;; GlobalImport
1089     "\7f"                          ;; i32
1090     "\00"                          ;; immutable
1091   )
1092   "malformed UTF-8 encoding"
1093 )
1094
1095 ;; second byte after (0xed) 3-byte prefix not a continuation byte
1096 (assert_malformed
1097   (module binary
1098     "\00asm" "\01\00\00\00"
1099     "\02\0d"                       ;; import section
1100     "\01"                          ;; length 1
1101     "\04\74\65\73\74"              ;; "test"
1102     "\03\ed\80\c0"                 ;; "\ed\80\c0"
1103     "\03"                          ;; GlobalImport
1104     "\7f"                          ;; i32
1105     "\00"                          ;; immutable
1106   )
1107   "malformed UTF-8 encoding"
1108 )
1109
1110 ;; second byte after (0xed) 3-byte prefix not a continuation byte
1111 (assert_malformed
1112   (module binary
1113     "\00asm" "\01\00\00\00"
1114     "\02\0d"                       ;; import section
1115     "\01"                          ;; length 1
1116     "\04\74\65\73\74"              ;; "test"
1117     "\03\ed\80\fd"                 ;; "\ed\80\fd"
1118     "\03"                          ;; GlobalImport
1119     "\7f"                          ;; i32
1120     "\00"                          ;; immutable
1121   )
1122   "malformed UTF-8 encoding"
1123 )
1124
1125 ;; second byte after (normal) 3-byte prefix not a continuation byte
1126 (assert_malformed
1127   (module binary
1128     "\00asm" "\01\00\00\00"
1129     "\02\0d"                       ;; import section
1130     "\01"                          ;; length 1
1131     "\04\74\65\73\74"              ;; "test"
1132     "\03\ee\80\00"                 ;; "\ee\80\00"
1133     "\03"                          ;; GlobalImport
1134     "\7f"                          ;; i32
1135     "\00"                          ;; immutable
1136   )
1137   "malformed UTF-8 encoding"
1138 )
1139
1140 ;; second byte after (normal) 3-byte prefix not a continuation byte
1141 (assert_malformed
1142   (module binary
1143     "\00asm" "\01\00\00\00"
1144     "\02\0d"                       ;; import section
1145     "\01"                          ;; length 1
1146     "\04\74\65\73\74"              ;; "test"
1147     "\03\ee\80\7f"                 ;; "\ee\80\7f"
1148     "\03"                          ;; GlobalImport
1149     "\7f"                          ;; i32
1150     "\00"                          ;; immutable
1151   )
1152   "malformed UTF-8 encoding"
1153 )
1154
1155 ;; second byte after (normal) 3-byte prefix not a continuation byte
1156 (assert_malformed
1157   (module binary
1158     "\00asm" "\01\00\00\00"
1159     "\02\0d"                       ;; import section
1160     "\01"                          ;; length 1
1161     "\04\74\65\73\74"              ;; "test"
1162     "\03\ee\80\c0"                 ;; "\ee\80\c0"
1163     "\03"                          ;; GlobalImport
1164     "\7f"                          ;; i32
1165     "\00"                          ;; immutable
1166   )
1167   "malformed UTF-8 encoding"
1168 )
1169
1170 ;; second byte after (normal) 3-byte prefix not a continuation byte
1171 (assert_malformed
1172   (module binary
1173     "\00asm" "\01\00\00\00"
1174     "\02\0d"                       ;; import section
1175     "\01"                          ;; length 1
1176     "\04\74\65\73\74"              ;; "test"
1177     "\03\ee\80\fd"                 ;; "\ee\80\fd"
1178     "\03"                          ;; GlobalImport
1179     "\7f"                          ;; i32
1180     "\00"                          ;; immutable
1181   )
1182   "malformed UTF-8 encoding"
1183 )
1184
1185 ;; second byte after (last normal) 3-byte prefix not a continuation byte
1186 (assert_malformed
1187   (module binary
1188     "\00asm" "\01\00\00\00"
1189     "\02\0d"                       ;; import section
1190     "\01"                          ;; length 1
1191     "\04\74\65\73\74"              ;; "test"
1192     "\03\ef\80\00"                 ;; "\ef\80\00"
1193     "\03"                          ;; GlobalImport
1194     "\7f"                          ;; i32
1195     "\00"                          ;; immutable
1196   )
1197   "malformed UTF-8 encoding"
1198 )
1199
1200 ;; second byte after (last normal) 3-byte prefix not a continuation byte
1201 (assert_malformed
1202   (module binary
1203     "\00asm" "\01\00\00\00"
1204     "\02\0d"                       ;; import section
1205     "\01"                          ;; length 1
1206     "\04\74\65\73\74"              ;; "test"
1207     "\03\ef\80\7f"                 ;; "\ef\80\7f"
1208     "\03"                          ;; GlobalImport
1209     "\7f"                          ;; i32
1210     "\00"                          ;; immutable
1211   )
1212   "malformed UTF-8 encoding"
1213 )
1214
1215 ;; second byte after (last normal) 3-byte prefix not a continuation byte
1216 (assert_malformed
1217   (module binary
1218     "\00asm" "\01\00\00\00"
1219     "\02\0d"                       ;; import section
1220     "\01"                          ;; length 1
1221     "\04\74\65\73\74"              ;; "test"
1222     "\03\ef\80\c0"                 ;; "\ef\80\c0"
1223     "\03"                          ;; GlobalImport
1224     "\7f"                          ;; i32
1225     "\00"                          ;; immutable
1226   )
1227   "malformed UTF-8 encoding"
1228 )
1229
1230 ;; second byte after (last normal) 3-byte prefix not a continuation byte
1231 (assert_malformed
1232   (module binary
1233     "\00asm" "\01\00\00\00"
1234     "\02\0d"                       ;; import section
1235     "\01"                          ;; length 1
1236     "\04\74\65\73\74"              ;; "test"
1237     "\03\ef\80\fd"                 ;; "\ef\80\fd"
1238     "\03"                          ;; GlobalImport
1239     "\7f"                          ;; i32
1240     "\00"                          ;; immutable
1241   )
1242   "malformed UTF-8 encoding"
1243 )
1244
1245 ;;;; 4-byte sequences
1246
1247 ;; 4-byte sequence contains 5 bytes
1248 (assert_malformed
1249   (module binary
1250     "\00asm" "\01\00\00\00"
1251     "\02\0f"                       ;; import section
1252     "\01"                          ;; length 1
1253     "\04\74\65\73\74"              ;; "test"
1254     "\05\f1\80\80\80\80"           ;; "\f1\80\80\80\80"
1255     "\03"                          ;; GlobalImport
1256     "\7f"                          ;; i32
1257     "\00"                          ;; immutable
1258   )
1259   "malformed UTF-8 encoding"
1260 )
1261
1262 ;; 4-byte sequence contains 3 bytes at end of string
1263 (assert_malformed
1264   (module binary
1265     "\00asm" "\01\00\00\00"
1266     "\02\0d"                       ;; import section
1267     "\01"                          ;; length 1
1268     "\04\74\65\73\74"              ;; "test"
1269     "\03\f1\80\80"                 ;; "\f1\80\80"
1270     "\03"                          ;; GlobalImport
1271     "\7f"                          ;; i32
1272     "\00"                          ;; immutable
1273   )
1274   "malformed UTF-8 encoding"
1275 )
1276
1277 ;; 4-byte sequence contains 3 bytes
1278 (assert_malformed
1279   (module binary
1280     "\00asm" "\01\00\00\00"
1281     "\02\0e"                       ;; import section
1282     "\01"                          ;; length 1
1283     "\04\74\65\73\74"              ;; "test"
1284     "\04\f1\80\80\23"              ;; "\f1\80\80#"
1285     "\03"                          ;; GlobalImport
1286     "\7f"                          ;; i32
1287     "\00"                          ;; immutable
1288   )
1289   "malformed UTF-8 encoding"
1290 )
1291
1292 ;; 4-byte sequence contains 2 bytes at end of string
1293 (assert_malformed
1294   (module binary
1295     "\00asm" "\01\00\00\00"
1296     "\02\0c"                       ;; import section
1297     "\01"                          ;; length 1
1298     "\04\74\65\73\74"              ;; "test"
1299     "\02\f1\80"                    ;; "\f1\80"
1300     "\03"                          ;; GlobalImport
1301     "\7f"                          ;; i32
1302     "\00"                          ;; immutable
1303   )
1304   "malformed UTF-8 encoding"
1305 )
1306
1307 ;; 4-byte sequence contains 2 bytes
1308 (assert_malformed
1309   (module binary
1310     "\00asm" "\01\00\00\00"
1311     "\02\0d"                       ;; import section
1312     "\01"                          ;; length 1
1313     "\04\74\65\73\74"              ;; "test"
1314     "\03\f1\80\23"                 ;; "\f1\80#"
1315     "\03"                          ;; GlobalImport
1316     "\7f"                          ;; i32
1317     "\00"                          ;; immutable
1318   )
1319   "malformed UTF-8 encoding"
1320 )
1321
1322 ;; 4-byte sequence contains 1 byte at end of string
1323 (assert_malformed
1324   (module binary
1325     "\00asm" "\01\00\00\00"
1326     "\02\0b"                       ;; import section
1327     "\01"                          ;; length 1
1328     "\04\74\65\73\74"              ;; "test"
1329     "\01\f1"                       ;; "\f1"
1330     "\03"                          ;; GlobalImport
1331     "\7f"                          ;; i32
1332     "\00"                          ;; immutable
1333   )
1334   "malformed UTF-8 encoding"
1335 )
1336
1337 ;; 4-byte sequence contains 1 byte
1338 (assert_malformed
1339   (module binary
1340     "\00asm" "\01\00\00\00"
1341     "\02\0c"                       ;; import section
1342     "\01"                          ;; length 1
1343     "\04\74\65\73\74"              ;; "test"
1344     "\02\f1\23"                    ;; "\f1#"
1345     "\03"                          ;; GlobalImport
1346     "\7f"                          ;; i32
1347     "\00"                          ;; immutable
1348   )
1349   "malformed UTF-8 encoding"
1350 )
1351
1352 ;;;; 4-byte sequence contents
1353
1354 ;; first byte after (0xf0) 4-byte prefix not a continuation byte
1355 (assert_malformed
1356   (module binary
1357     "\00asm" "\01\00\00\00"
1358     "\02\0e"                       ;; import section
1359     "\01"                          ;; length 1
1360     "\04\74\65\73\74"              ;; "test"
1361     "\04\f0\00\90\90"              ;; "\f0\00\90\90"
1362     "\03"                          ;; GlobalImport
1363     "\7f"                          ;; i32
1364     "\00"                          ;; immutable
1365   )
1366   "malformed UTF-8 encoding"
1367 )
1368
1369 ;; first byte after (0xf0) 4-byte prefix not a continuation byte
1370 (assert_malformed
1371   (module binary
1372     "\00asm" "\01\00\00\00"
1373     "\02\0e"                       ;; import section
1374     "\01"                          ;; length 1
1375     "\04\74\65\73\74"              ;; "test"
1376     "\04\f0\7f\90\90"              ;; "\f0\7f\90\90"
1377     "\03"                          ;; GlobalImport
1378     "\7f"                          ;; i32
1379     "\00"                          ;; immutable
1380   )
1381   "malformed UTF-8 encoding"
1382 )
1383
1384 ;; overlong encoding after 0xf0 prefix
1385 (assert_malformed
1386   (module binary
1387     "\00asm" "\01\00\00\00"
1388     "\02\0e"                       ;; import section
1389     "\01"                          ;; length 1
1390     "\04\74\65\73\74"              ;; "test"
1391     "\04\f0\80\80\80"              ;; "\f0\80\80\80"
1392     "\03"                          ;; GlobalImport
1393     "\7f"                          ;; i32
1394     "\00"                          ;; immutable
1395   )
1396   "malformed UTF-8 encoding"
1397 )
1398
1399 ;; overlong encoding after 0xf0 prefix
1400 (assert_malformed
1401   (module binary
1402     "\00asm" "\01\00\00\00"
1403     "\02\0e"                       ;; import section
1404     "\01"                          ;; length 1
1405     "\04\74\65\73\74"              ;; "test"
1406     "\04\f0\80\90\90"              ;; "\f0\80\90\90"
1407     "\03"                          ;; GlobalImport
1408     "\7f"                          ;; i32
1409     "\00"                          ;; immutable
1410   )
1411   "malformed UTF-8 encoding"
1412 )
1413
1414 ;; overlong encoding after 0xf0 prefix
1415 (assert_malformed
1416   (module binary
1417     "\00asm" "\01\00\00\00"
1418     "\02\0e"                       ;; import section
1419     "\01"                          ;; length 1
1420     "\04\74\65\73\74"              ;; "test"
1421     "\04\f0\8f\90\90"              ;; "\f0\8f\90\90"
1422     "\03"                          ;; GlobalImport
1423     "\7f"                          ;; i32
1424     "\00"                          ;; immutable
1425   )
1426   "malformed UTF-8 encoding"
1427 )
1428
1429 ;; overlong encoding after 0xf0 prefix
1430 (assert_malformed
1431   (module binary
1432     "\00asm" "\01\00\00\00"
1433     "\02\0e"                       ;; import section
1434     "\01"                          ;; length 1
1435     "\04\74\65\73\74"              ;; "test"
1436     "\04\f0\8f\bf\bf"              ;; "\f0\8f\bf\bf"
1437     "\03"                          ;; GlobalImport
1438     "\7f"                          ;; i32
1439     "\00"                          ;; immutable
1440   )
1441   "malformed UTF-8 encoding"
1442 )
1443
1444 ;; first byte after (0xf0) 4-byte prefix not a continuation byte
1445 (assert_malformed
1446   (module binary
1447     "\00asm" "\01\00\00\00"
1448     "\02\0e"                       ;; import section
1449     "\01"                          ;; length 1
1450     "\04\74\65\73\74"              ;; "test"
1451     "\04\f0\c0\90\90"              ;; "\f0\c0\90\90"
1452     "\03"                          ;; GlobalImport
1453     "\7f"                          ;; i32
1454     "\00"                          ;; immutable
1455   )
1456   "malformed UTF-8 encoding"
1457 )
1458
1459 ;; first byte after (0xf0) 4-byte prefix not a continuation byte
1460 (assert_malformed
1461   (module binary
1462     "\00asm" "\01\00\00\00"
1463     "\02\0e"                       ;; import section
1464     "\01"                          ;; length 1
1465     "\04\74\65\73\74"              ;; "test"
1466     "\04\f0\fd\90\90"              ;; "\f0\fd\90\90"
1467     "\03"                          ;; GlobalImport
1468     "\7f"                          ;; i32
1469     "\00"                          ;; immutable
1470   )
1471   "malformed UTF-8 encoding"
1472 )
1473
1474 ;; first byte after (first normal) 4-byte prefix not a continuation byte
1475 (assert_malformed
1476   (module binary
1477     "\00asm" "\01\00\00\00"
1478     "\02\0e"                       ;; import section
1479     "\01"                          ;; length 1
1480     "\04\74\65\73\74"              ;; "test"
1481     "\04\f1\00\80\80"              ;; "\f1\00\80\80"
1482     "\03"                          ;; GlobalImport
1483     "\7f"                          ;; i32
1484     "\00"                          ;; immutable
1485   )
1486   "malformed UTF-8 encoding"
1487 )
1488
1489 ;; first byte after (first normal) 4-byte prefix not a continuation byte
1490 (assert_malformed
1491   (module binary
1492     "\00asm" "\01\00\00\00"
1493     "\02\0e"                       ;; import section
1494     "\01"                          ;; length 1
1495     "\04\74\65\73\74"              ;; "test"
1496     "\04\f1\7f\80\80"              ;; "\f1\7f\80\80"
1497     "\03"                          ;; GlobalImport
1498     "\7f"                          ;; i32
1499     "\00"                          ;; immutable
1500   )
1501   "malformed UTF-8 encoding"
1502 )
1503
1504 ;; first byte after (first normal) 4-byte prefix not a continuation byte
1505 (assert_malformed
1506   (module binary
1507     "\00asm" "\01\00\00\00"
1508     "\02\0e"                       ;; import section
1509     "\01"                          ;; length 1
1510     "\04\74\65\73\74"              ;; "test"
1511     "\04\f1\c0\80\80"              ;; "\f1\c0\80\80"
1512     "\03"                          ;; GlobalImport
1513     "\7f"                          ;; i32
1514     "\00"                          ;; immutable
1515   )
1516   "malformed UTF-8 encoding"
1517 )
1518
1519 ;; first byte after (first normal) 4-byte prefix not a continuation byte
1520 (assert_malformed
1521   (module binary
1522     "\00asm" "\01\00\00\00"
1523     "\02\0e"                       ;; import section
1524     "\01"                          ;; length 1
1525     "\04\74\65\73\74"              ;; "test"
1526     "\04\f1\fd\80\80"              ;; "\f1\fd\80\80"
1527     "\03"                          ;; GlobalImport
1528     "\7f"                          ;; i32
1529     "\00"                          ;; immutable
1530   )
1531   "malformed UTF-8 encoding"
1532 )
1533
1534 ;; first byte after (last normal) 4-byte prefix not a continuation byte
1535 (assert_malformed
1536   (module binary
1537     "\00asm" "\01\00\00\00"
1538     "\02\0e"                       ;; import section
1539     "\01"                          ;; length 1
1540     "\04\74\65\73\74"              ;; "test"
1541     "\04\f3\00\80\80"              ;; "\f3\00\80\80"
1542     "\03"                          ;; GlobalImport
1543     "\7f"                          ;; i32
1544     "\00"                          ;; immutable
1545   )
1546   "malformed UTF-8 encoding"
1547 )
1548
1549 ;; first byte after (last normal) 4-byte prefix not a continuation byte
1550 (assert_malformed
1551   (module binary
1552     "\00asm" "\01\00\00\00"
1553     "\02\0e"                       ;; import section
1554     "\01"                          ;; length 1
1555     "\04\74\65\73\74"              ;; "test"
1556     "\04\f3\7f\80\80"              ;; "\f3\7f\80\80"
1557     "\03"                          ;; GlobalImport
1558     "\7f"                          ;; i32
1559     "\00"                          ;; immutable
1560   )
1561   "malformed UTF-8 encoding"
1562 )
1563
1564 ;; first byte after (last normal) 4-byte prefix not a continuation byte
1565 (assert_malformed
1566   (module binary
1567     "\00asm" "\01\00\00\00"
1568     "\02\0e"                       ;; import section
1569     "\01"                          ;; length 1
1570     "\04\74\65\73\74"              ;; "test"
1571     "\04\f3\c0\80\80"              ;; "\f3\c0\80\80"
1572     "\03"                          ;; GlobalImport
1573     "\7f"                          ;; i32
1574     "\00"                          ;; immutable
1575   )
1576   "malformed UTF-8 encoding"
1577 )
1578
1579 ;; first byte after (last normal) 4-byte prefix not a continuation byte
1580 (assert_malformed
1581   (module binary
1582     "\00asm" "\01\00\00\00"
1583     "\02\0e"                       ;; import section
1584     "\01"                          ;; length 1
1585     "\04\74\65\73\74"              ;; "test"
1586     "\04\f3\fd\80\80"              ;; "\f3\fd\80\80"
1587     "\03"                          ;; GlobalImport
1588     "\7f"                          ;; i32
1589     "\00"                          ;; immutable
1590   )
1591   "malformed UTF-8 encoding"
1592 )
1593
1594 ;; first byte after (0xf4) 4-byte prefix not a continuation byte
1595 (assert_malformed
1596   (module binary
1597     "\00asm" "\01\00\00\00"
1598     "\02\0e"                       ;; import section
1599     "\01"                          ;; length 1
1600     "\04\74\65\73\74"              ;; "test"
1601     "\04\f4\00\80\80"              ;; "\f4\00\80\80"
1602     "\03"                          ;; GlobalImport
1603     "\7f"                          ;; i32
1604     "\00"                          ;; immutable
1605   )
1606   "malformed UTF-8 encoding"
1607 )
1608
1609 ;; first byte after (0xf4) 4-byte prefix not a continuation byte
1610 (assert_malformed
1611   (module binary
1612     "\00asm" "\01\00\00\00"
1613     "\02\0e"                       ;; import section
1614     "\01"                          ;; length 1
1615     "\04\74\65\73\74"              ;; "test"
1616     "\04\f4\7f\80\80"              ;; "\f4\7f\80\80"
1617     "\03"                          ;; GlobalImport
1618     "\7f"                          ;; i32
1619     "\00"                          ;; immutable
1620   )
1621   "malformed UTF-8 encoding"
1622 )
1623
1624 ;; (first) malformed code point
1625 (assert_malformed
1626   (module binary
1627     "\00asm" "\01\00\00\00"
1628     "\02\0e"                       ;; import section
1629     "\01"                          ;; length 1
1630     "\04\74\65\73\74"              ;; "test"
1631     "\04\f4\90\80\80"              ;; "\f4\90\80\80"
1632     "\03"                          ;; GlobalImport
1633     "\7f"                          ;; i32
1634     "\00"                          ;; immutable
1635   )
1636   "malformed UTF-8 encoding"
1637 )
1638
1639 ;; malformed code point
1640 (assert_malformed
1641   (module binary
1642     "\00asm" "\01\00\00\00"
1643     "\02\0e"                       ;; import section
1644     "\01"                          ;; length 1
1645     "\04\74\65\73\74"              ;; "test"
1646     "\04\f4\bf\80\80"              ;; "\f4\bf\80\80"
1647     "\03"                          ;; GlobalImport
1648     "\7f"                          ;; i32
1649     "\00"                          ;; immutable
1650   )
1651   "malformed UTF-8 encoding"
1652 )
1653
1654 ;; first byte after (0xf4) 4-byte prefix not a continuation byte
1655 (assert_malformed
1656   (module binary
1657     "\00asm" "\01\00\00\00"
1658     "\02\0e"                       ;; import section
1659     "\01"                          ;; length 1
1660     "\04\74\65\73\74"              ;; "test"
1661     "\04\f4\c0\80\80"              ;; "\f4\c0\80\80"
1662     "\03"                          ;; GlobalImport
1663     "\7f"                          ;; i32
1664     "\00"                          ;; immutable
1665   )
1666   "malformed UTF-8 encoding"
1667 )
1668
1669 ;; first byte after (0xf4) 4-byte prefix not a continuation byte
1670 (assert_malformed
1671   (module binary
1672     "\00asm" "\01\00\00\00"
1673     "\02\0e"                       ;; import section
1674     "\01"                          ;; length 1
1675     "\04\74\65\73\74"              ;; "test"
1676     "\04\f4\fd\80\80"              ;; "\f4\fd\80\80"
1677     "\03"                          ;; GlobalImport
1678     "\7f"                          ;; i32
1679     "\00"                          ;; immutable
1680   )
1681   "malformed UTF-8 encoding"
1682 )
1683
1684 ;; (first) malformed 4-byte prefix
1685 (assert_malformed
1686   (module binary
1687     "\00asm" "\01\00\00\00"
1688     "\02\0e"                       ;; import section
1689     "\01"                          ;; length 1
1690     "\04\74\65\73\74"              ;; "test"
1691     "\04\f5\80\80\80"              ;; "\f5\80\80\80"
1692     "\03"                          ;; GlobalImport
1693     "\7f"                          ;; i32
1694     "\00"                          ;; immutable
1695   )
1696   "malformed UTF-8 encoding"
1697 )
1698
1699 ;; (last) malformed 4-byte prefix
1700 (assert_malformed
1701   (module binary
1702     "\00asm" "\01\00\00\00"
1703     "\02\0e"                       ;; import section
1704     "\01"                          ;; length 1
1705     "\04\74\65\73\74"              ;; "test"
1706     "\04\f7\80\80\80"              ;; "\f7\80\80\80"
1707     "\03"                          ;; GlobalImport
1708     "\7f"                          ;; i32
1709     "\00"                          ;; immutable
1710   )
1711   "malformed UTF-8 encoding"
1712 )
1713
1714 ;; (last) malformed 4-byte prefix
1715 (assert_malformed
1716   (module binary
1717     "\00asm" "\01\00\00\00"
1718     "\02\0e"                       ;; import section
1719     "\01"                          ;; length 1
1720     "\04\74\65\73\74"              ;; "test"
1721     "\04\f7\bf\bf\bf"              ;; "\f7\bf\bf\bf"
1722     "\03"                          ;; GlobalImport
1723     "\7f"                          ;; i32
1724     "\00"                          ;; immutable
1725   )
1726   "malformed UTF-8 encoding"
1727 )
1728
1729 ;;;; 4-byte sequence contents (third byte)
1730
1731 ;; second byte after (0xf0) 4-byte prefix not a continuation byte
1732 (assert_malformed
1733   (module binary
1734     "\00asm" "\01\00\00\00"
1735     "\02\0e"                       ;; import section
1736     "\01"                          ;; length 1
1737     "\04\74\65\73\74"              ;; "test"
1738     "\04\f0\90\00\90"              ;; "\f0\90\00\90"
1739     "\03"                          ;; GlobalImport
1740     "\7f"                          ;; i32
1741     "\00"                          ;; immutable
1742   )
1743   "malformed UTF-8 encoding"
1744 )
1745
1746 ;; second byte after (0xf0) 4-byte prefix not a continuation byte
1747 (assert_malformed
1748   (module binary
1749     "\00asm" "\01\00\00\00"
1750     "\02\0e"                       ;; import section
1751     "\01"                          ;; length 1
1752     "\04\74\65\73\74"              ;; "test"
1753     "\04\f0\90\7f\90"              ;; "\f0\90\7f\90"
1754     "\03"                          ;; GlobalImport
1755     "\7f"                          ;; i32
1756     "\00"                          ;; immutable
1757   )
1758   "malformed UTF-8 encoding"
1759 )
1760
1761 ;; second byte after (0xf0) 4-byte prefix not a continuation byte
1762 (assert_malformed
1763   (module binary
1764     "\00asm" "\01\00\00\00"
1765     "\02\0e"                       ;; import section
1766     "\01"                          ;; length 1
1767     "\04\74\65\73\74"              ;; "test"
1768     "\04\f0\90\c0\90"              ;; "\f0\90\c0\90"
1769     "\03"                          ;; GlobalImport
1770     "\7f"                          ;; i32
1771     "\00"                          ;; immutable
1772   )
1773   "malformed UTF-8 encoding"
1774 )
1775
1776 ;; second byte after (0xf0) 4-byte prefix not a continuation byte
1777 (assert_malformed
1778   (module binary
1779     "\00asm" "\01\00\00\00"
1780     "\02\0e"                       ;; import section
1781     "\01"                          ;; length 1
1782     "\04\74\65\73\74"              ;; "test"
1783     "\04\f0\90\fd\90"              ;; "\f0\90\fd\90"
1784     "\03"                          ;; GlobalImport
1785     "\7f"                          ;; i32
1786     "\00"                          ;; immutable
1787   )
1788   "malformed UTF-8 encoding"
1789 )
1790
1791 ;; second byte after (first normal) 4-byte prefix not a continuation byte
1792 (assert_malformed
1793   (module binary
1794     "\00asm" "\01\00\00\00"
1795     "\02\0e"                       ;; import section
1796     "\01"                          ;; length 1
1797     "\04\74\65\73\74"              ;; "test"
1798     "\04\f1\80\00\80"              ;; "\f1\80\00\80"
1799     "\03"                          ;; GlobalImport
1800     "\7f"                          ;; i32
1801     "\00"                          ;; immutable
1802   )
1803   "malformed UTF-8 encoding"
1804 )
1805
1806 ;; second byte after (first normal) 4-byte prefix not a continuation byte
1807 (assert_malformed
1808   (module binary
1809     "\00asm" "\01\00\00\00"
1810     "\02\0e"                       ;; import section
1811     "\01"                          ;; length 1
1812     "\04\74\65\73\74"              ;; "test"
1813     "\04\f1\80\7f\80"              ;; "\f1\80\7f\80"
1814     "\03"                          ;; GlobalImport
1815     "\7f"                          ;; i32
1816     "\00"                          ;; immutable
1817   )
1818   "malformed UTF-8 encoding"
1819 )
1820
1821 ;; second byte after (first normal) 4-byte prefix not a continuation byte
1822 (assert_malformed
1823   (module binary
1824     "\00asm" "\01\00\00\00"
1825     "\02\0e"                       ;; import section
1826     "\01"                          ;; length 1
1827     "\04\74\65\73\74"              ;; "test"
1828     "\04\f1\80\c0\80"              ;; "\f1\80\c0\80"
1829     "\03"                          ;; GlobalImport
1830     "\7f"                          ;; i32
1831     "\00"                          ;; immutable
1832   )
1833   "malformed UTF-8 encoding"
1834 )
1835
1836 ;; second byte after (first normal) 4-byte prefix not a continuation byte
1837 (assert_malformed
1838   (module binary
1839     "\00asm" "\01\00\00\00"
1840     "\02\0e"                       ;; import section
1841     "\01"                          ;; length 1
1842     "\04\74\65\73\74"              ;; "test"
1843     "\04\f1\80\fd\80"              ;; "\f1\80\fd\80"
1844     "\03"                          ;; GlobalImport
1845     "\7f"                          ;; i32
1846     "\00"                          ;; immutable
1847   )
1848   "malformed UTF-8 encoding"
1849 )
1850
1851 ;; second byte after (last normal) 4-byte prefix not a continuation byte
1852 (assert_malformed
1853   (module binary
1854     "\00asm" "\01\00\00\00"
1855     "\02\0e"                       ;; import section
1856     "\01"                          ;; length 1
1857     "\04\74\65\73\74"              ;; "test"
1858     "\04\f3\80\00\80"              ;; "\f3\80\00\80"
1859     "\03"                          ;; GlobalImport
1860     "\7f"                          ;; i32
1861     "\00"                          ;; immutable
1862   )
1863   "malformed UTF-8 encoding"
1864 )
1865
1866 ;; second byte after (last normal) 4-byte prefix not a continuation byte
1867 (assert_malformed
1868   (module binary
1869     "\00asm" "\01\00\00\00"
1870     "\02\0e"                       ;; import section
1871     "\01"                          ;; length 1
1872     "\04\74\65\73\74"              ;; "test"
1873     "\04\f3\80\7f\80"              ;; "\f3\80\7f\80"
1874     "\03"                          ;; GlobalImport
1875     "\7f"                          ;; i32
1876     "\00"                          ;; immutable
1877   )
1878   "malformed UTF-8 encoding"
1879 )
1880
1881 ;; second byte after (last normal) 4-byte prefix not a continuation byte
1882 (assert_malformed
1883   (module binary
1884     "\00asm" "\01\00\00\00"
1885     "\02\0e"                       ;; import section
1886     "\01"                          ;; length 1
1887     "\04\74\65\73\74"              ;; "test"
1888     "\04\f3\80\c0\80"              ;; "\f3\80\c0\80"
1889     "\03"                          ;; GlobalImport
1890     "\7f"                          ;; i32
1891     "\00"                          ;; immutable
1892   )
1893   "malformed UTF-8 encoding"
1894 )
1895
1896 ;; second byte after (last normal) 4-byte prefix not a continuation byte
1897 (assert_malformed
1898   (module binary
1899     "\00asm" "\01\00\00\00"
1900     "\02\0e"                       ;; import section
1901     "\01"                          ;; length 1
1902     "\04\74\65\73\74"              ;; "test"
1903     "\04\f3\80\fd\80"              ;; "\f3\80\fd\80"
1904     "\03"                          ;; GlobalImport
1905     "\7f"                          ;; i32
1906     "\00"                          ;; immutable
1907   )
1908   "malformed UTF-8 encoding"
1909 )
1910
1911 ;; second byte after (0xf4) 4-byte prefix not a continuation byte
1912 (assert_malformed
1913   (module binary
1914     "\00asm" "\01\00\00\00"
1915     "\02\0e"                       ;; import section
1916     "\01"                          ;; length 1
1917     "\04\74\65\73\74"              ;; "test"
1918     "\04\f4\80\00\80"              ;; "\f4\80\00\80"
1919     "\03"                          ;; GlobalImport
1920     "\7f"                          ;; i32
1921     "\00"                          ;; immutable
1922   )
1923   "malformed UTF-8 encoding"
1924 )
1925
1926 ;; second byte after (0xf4) 4-byte prefix not a continuation byte
1927 (assert_malformed
1928   (module binary
1929     "\00asm" "\01\00\00\00"
1930     "\02\0e"                       ;; import section
1931     "\01"                          ;; length 1
1932     "\04\74\65\73\74"              ;; "test"
1933     "\04\f4\80\7f\80"              ;; "\f4\80\7f\80"
1934     "\03"                          ;; GlobalImport
1935     "\7f"                          ;; i32
1936     "\00"                          ;; immutable
1937   )
1938   "malformed UTF-8 encoding"
1939 )
1940
1941 ;; second byte after (0xf4) 4-byte prefix not a continuation byte
1942 (assert_malformed
1943   (module binary
1944     "\00asm" "\01\00\00\00"
1945     "\02\0e"                       ;; import section
1946     "\01"                          ;; length 1
1947     "\04\74\65\73\74"              ;; "test"
1948     "\04\f4\80\c0\80"              ;; "\f4\80\c0\80"
1949     "\03"                          ;; GlobalImport
1950     "\7f"                          ;; i32
1951     "\00"                          ;; immutable
1952   )
1953   "malformed UTF-8 encoding"
1954 )
1955
1956 ;; second byte after (0xf4) 4-byte prefix not a continuation byte
1957 (assert_malformed
1958   (module binary
1959     "\00asm" "\01\00\00\00"
1960     "\02\0e"                       ;; import section
1961     "\01"                          ;; length 1
1962     "\04\74\65\73\74"              ;; "test"
1963     "\04\f4\80\fd\80"              ;; "\f4\80\fd\80"
1964     "\03"                          ;; GlobalImport
1965     "\7f"                          ;; i32
1966     "\00"                          ;; immutable
1967   )
1968   "malformed UTF-8 encoding"
1969 )
1970
1971 ;;;; 4-byte sequence contents (fourth byte)
1972
1973 ;; third byte after (0xf0) 4-byte prefix not a continuation byte
1974 (assert_malformed
1975   (module binary
1976     "\00asm" "\01\00\00\00"
1977     "\02\0e"                       ;; import section
1978     "\01"                          ;; length 1
1979     "\04\74\65\73\74"              ;; "test"
1980     "\04\f0\90\90\00"              ;; "\f0\90\90\00"
1981     "\03"                          ;; GlobalImport
1982     "\7f"                          ;; i32
1983     "\00"                          ;; immutable
1984   )
1985   "malformed UTF-8 encoding"
1986 )
1987
1988 ;; third byte after (0xf0) 4-byte prefix not a continuation byte
1989 (assert_malformed
1990   (module binary
1991     "\00asm" "\01\00\00\00"
1992     "\02\0e"                       ;; import section
1993     "\01"                          ;; length 1
1994     "\04\74\65\73\74"              ;; "test"
1995     "\04\f0\90\90\7f"              ;; "\f0\90\90\7f"
1996     "\03"                          ;; GlobalImport
1997     "\7f"                          ;; i32
1998     "\00"                          ;; immutable
1999   )
2000   "malformed UTF-8 encoding"
2001 )
2002
2003 ;; third byte after (0xf0) 4-byte prefix not a continuation byte
2004 (assert_malformed
2005   (module binary
2006     "\00asm" "\01\00\00\00"
2007     "\02\0e"                       ;; import section
2008     "\01"                          ;; length 1
2009     "\04\74\65\73\74"              ;; "test"
2010     "\04\f0\90\90\c0"              ;; "\f0\90\90\c0"
2011     "\03"                          ;; GlobalImport
2012     "\7f"                          ;; i32
2013     "\00"                          ;; immutable
2014   )
2015   "malformed UTF-8 encoding"
2016 )
2017
2018 ;; third byte after (0xf0) 4-byte prefix not a continuation byte
2019 (assert_malformed
2020   (module binary
2021     "\00asm" "\01\00\00\00"
2022     "\02\0e"                       ;; import section
2023     "\01"                          ;; length 1
2024     "\04\74\65\73\74"              ;; "test"
2025     "\04\f0\90\90\fd"              ;; "\f0\90\90\fd"
2026     "\03"                          ;; GlobalImport
2027     "\7f"                          ;; i32
2028     "\00"                          ;; immutable
2029   )
2030   "malformed UTF-8 encoding"
2031 )
2032
2033 ;; third byte after (first normal) 4-byte prefix not a continuation byte
2034 (assert_malformed
2035   (module binary
2036     "\00asm" "\01\00\00\00"
2037     "\02\0e"                       ;; import section
2038     "\01"                          ;; length 1
2039     "\04\74\65\73\74"              ;; "test"
2040     "\04\f1\80\80\00"              ;; "\f1\80\80\00"
2041     "\03"                          ;; GlobalImport
2042     "\7f"                          ;; i32
2043     "\00"                          ;; immutable
2044   )
2045   "malformed UTF-8 encoding"
2046 )
2047
2048 ;; third byte after (first normal) 4-byte prefix not a continuation byte
2049 (assert_malformed
2050   (module binary
2051     "\00asm" "\01\00\00\00"
2052     "\02\0e"                       ;; import section
2053     "\01"                          ;; length 1
2054     "\04\74\65\73\74"              ;; "test"
2055     "\04\f1\80\80\7f"              ;; "\f1\80\80\7f"
2056     "\03"                          ;; GlobalImport
2057     "\7f"                          ;; i32
2058     "\00"                          ;; immutable
2059   )
2060   "malformed UTF-8 encoding"
2061 )
2062
2063 ;; third byte after (first normal) 4-byte prefix not a continuation byte
2064 (assert_malformed
2065   (module binary
2066     "\00asm" "\01\00\00\00"
2067     "\02\0e"                       ;; import section
2068     "\01"                          ;; length 1
2069     "\04\74\65\73\74"              ;; "test"
2070     "\04\f1\80\80\c0"              ;; "\f1\80\80\c0"
2071     "\03"                          ;; GlobalImport
2072     "\7f"                          ;; i32
2073     "\00"                          ;; immutable
2074   )
2075   "malformed UTF-8 encoding"
2076 )
2077
2078 ;; third byte after (first normal) 4-byte prefix not a continuation byte
2079 (assert_malformed
2080   (module binary
2081     "\00asm" "\01\00\00\00"
2082     "\02\0e"                       ;; import section
2083     "\01"                          ;; length 1
2084     "\04\74\65\73\74"              ;; "test"
2085     "\04\f1\80\80\fd"              ;; "\f1\80\80\fd"
2086     "\03"                          ;; GlobalImport
2087     "\7f"                          ;; i32
2088     "\00"                          ;; immutable
2089   )
2090   "malformed UTF-8 encoding"
2091 )
2092
2093 ;; third byte after (last normal) 4-byte prefix not a continuation byte
2094 (assert_malformed
2095   (module binary
2096     "\00asm" "\01\00\00\00"
2097     "\02\0e"                       ;; import section
2098     "\01"                          ;; length 1
2099     "\04\74\65\73\74"              ;; "test"
2100     "\04\f3\80\80\00"              ;; "\f3\80\80\00"
2101     "\03"                          ;; GlobalImport
2102     "\7f"                          ;; i32
2103     "\00"                          ;; immutable
2104   )
2105   "malformed UTF-8 encoding"
2106 )
2107
2108 ;; third byte after (last normal) 4-byte prefix not a continuation byte
2109 (assert_malformed
2110   (module binary
2111     "\00asm" "\01\00\00\00"
2112     "\02\0e"                       ;; import section
2113     "\01"                          ;; length 1
2114     "\04\74\65\73\74"              ;; "test"
2115     "\04\f3\80\80\7f"              ;; "\f3\80\80\7f"
2116     "\03"                          ;; GlobalImport
2117     "\7f"                          ;; i32
2118     "\00"                          ;; immutable
2119   )
2120   "malformed UTF-8 encoding"
2121 )
2122
2123 ;; third byte after (last normal) 4-byte prefix not a continuation byte
2124 (assert_malformed
2125   (module binary
2126     "\00asm" "\01\00\00\00"
2127     "\02\0e"                       ;; import section
2128     "\01"                          ;; length 1
2129     "\04\74\65\73\74"              ;; "test"
2130     "\04\f3\80\80\c0"              ;; "\f3\80\80\c0"
2131     "\03"                          ;; GlobalImport
2132     "\7f"                          ;; i32
2133     "\00"                          ;; immutable
2134   )
2135   "malformed UTF-8 encoding"
2136 )
2137
2138 ;; third byte after (last normal) 4-byte prefix not a continuation byte
2139 (assert_malformed
2140   (module binary
2141     "\00asm" "\01\00\00\00"
2142     "\02\0e"                       ;; import section
2143     "\01"                          ;; length 1
2144     "\04\74\65\73\74"              ;; "test"
2145     "\04\f3\80\80\fd"              ;; "\f3\80\80\fd"
2146     "\03"                          ;; GlobalImport
2147     "\7f"                          ;; i32
2148     "\00"                          ;; immutable
2149   )
2150   "malformed UTF-8 encoding"
2151 )
2152
2153 ;; third byte after (0xf4) 4-byte prefix not a continuation byte
2154 (assert_malformed
2155   (module binary
2156     "\00asm" "\01\00\00\00"
2157     "\02\0e"                       ;; import section
2158     "\01"                          ;; length 1
2159     "\04\74\65\73\74"              ;; "test"
2160     "\04\f4\80\80\00"              ;; "\f4\80\80\00"
2161     "\03"                          ;; GlobalImport
2162     "\7f"                          ;; i32
2163     "\00"                          ;; immutable
2164   )
2165   "malformed UTF-8 encoding"
2166 )
2167
2168 ;; third byte after (0xf4) 4-byte prefix not a continuation byte
2169 (assert_malformed
2170   (module binary
2171     "\00asm" "\01\00\00\00"
2172     "\02\0e"                       ;; import section
2173     "\01"                          ;; length 1
2174     "\04\74\65\73\74"              ;; "test"
2175     "\04\f4\80\80\7f"              ;; "\f4\80\80\7f"
2176     "\03"                          ;; GlobalImport
2177     "\7f"                          ;; i32
2178     "\00"                          ;; immutable
2179   )
2180   "malformed UTF-8 encoding"
2181 )
2182
2183 ;; third byte after (0xf4) 4-byte prefix not a continuation byte
2184 (assert_malformed
2185   (module binary
2186     "\00asm" "\01\00\00\00"
2187     "\02\0e"                       ;; import section
2188     "\01"                          ;; length 1
2189     "\04\74\65\73\74"              ;; "test"
2190     "\04\f4\80\80\c0"              ;; "\f4\80\80\c0"
2191     "\03"                          ;; GlobalImport
2192     "\7f"                          ;; i32
2193     "\00"                          ;; immutable
2194   )
2195   "malformed UTF-8 encoding"
2196 )
2197
2198 ;; third byte after (0xf4) 4-byte prefix not a continuation byte
2199 (assert_malformed
2200   (module binary
2201     "\00asm" "\01\00\00\00"
2202     "\02\0e"                       ;; import section
2203     "\01"                          ;; length 1
2204     "\04\74\65\73\74"              ;; "test"
2205     "\04\f4\80\80\fd"              ;; "\f4\80\80\fd"
2206     "\03"                          ;; GlobalImport
2207     "\7f"                          ;; i32
2208     "\00"                          ;; immutable
2209   )
2210   "malformed UTF-8 encoding"
2211 )
2212
2213 ;;;; 5-byte sequences
2214
2215 ;; 5-byte sequence contains 6 bytes
2216 (assert_malformed
2217   (module binary
2218     "\00asm" "\01\00\00\00"
2219     "\02\10"                       ;; import section
2220     "\01"                          ;; length 1
2221     "\04\74\65\73\74"              ;; "test"
2222     "\06\f8\80\80\80\80\80"        ;; "\f8\80\80\80\80\80"
2223     "\03"                          ;; GlobalImport
2224     "\7f"                          ;; i32
2225     "\00"                          ;; immutable
2226   )
2227   "malformed UTF-8 encoding"
2228 )
2229
2230 ;; 5-byte sequence contains 4 bytes at end of string
2231 (assert_malformed
2232   (module binary
2233     "\00asm" "\01\00\00\00"
2234     "\02\0e"                       ;; import section
2235     "\01"                          ;; length 1
2236     "\04\74\65\73\74"              ;; "test"
2237     "\04\f8\80\80\80"              ;; "\f8\80\80\80"
2238     "\03"                          ;; GlobalImport
2239     "\7f"                          ;; i32
2240     "\00"                          ;; immutable
2241   )
2242   "malformed UTF-8 encoding"
2243 )
2244
2245 ;; 5-byte sequence contains 4 bytes
2246 (assert_malformed
2247   (module binary
2248     "\00asm" "\01\00\00\00"
2249     "\02\0f"                       ;; import section
2250     "\01"                          ;; length 1
2251     "\04\74\65\73\74"              ;; "test"
2252     "\05\f8\80\80\80\23"           ;; "\f8\80\80\80#"
2253     "\03"                          ;; GlobalImport
2254     "\7f"                          ;; i32
2255     "\00"                          ;; immutable
2256   )
2257   "malformed UTF-8 encoding"
2258 )
2259
2260 ;; 5-byte sequence contains 3 bytes at end of string
2261 (assert_malformed
2262   (module binary
2263     "\00asm" "\01\00\00\00"
2264     "\02\0d"                       ;; import section
2265     "\01"                          ;; length 1
2266     "\04\74\65\73\74"              ;; "test"
2267     "\03\f8\80\80"                 ;; "\f8\80\80"
2268     "\03"                          ;; GlobalImport
2269     "\7f"                          ;; i32
2270     "\00"                          ;; immutable
2271   )
2272   "malformed UTF-8 encoding"
2273 )
2274
2275 ;; 5-byte sequence contains 3 bytes
2276 (assert_malformed
2277   (module binary
2278     "\00asm" "\01\00\00\00"
2279     "\02\0e"                       ;; import section
2280     "\01"                          ;; length 1
2281     "\04\74\65\73\74"              ;; "test"
2282     "\04\f8\80\80\23"              ;; "\f8\80\80#"
2283     "\03"                          ;; GlobalImport
2284     "\7f"                          ;; i32
2285     "\00"                          ;; immutable
2286   )
2287   "malformed UTF-8 encoding"
2288 )
2289
2290 ;; 5-byte sequence contains 2 bytes at end of string
2291 (assert_malformed
2292   (module binary
2293     "\00asm" "\01\00\00\00"
2294     "\02\0c"                       ;; import section
2295     "\01"                          ;; length 1
2296     "\04\74\65\73\74"              ;; "test"
2297     "\02\f8\80"                    ;; "\f8\80"
2298     "\03"                          ;; GlobalImport
2299     "\7f"                          ;; i32
2300     "\00"                          ;; immutable
2301   )
2302   "malformed UTF-8 encoding"
2303 )
2304
2305 ;; 5-byte sequence contains 2 bytes
2306 (assert_malformed
2307   (module binary
2308     "\00asm" "\01\00\00\00"
2309     "\02\0d"                       ;; import section
2310     "\01"                          ;; length 1
2311     "\04\74\65\73\74"              ;; "test"
2312     "\03\f8\80\23"                 ;; "\f8\80#"
2313     "\03"                          ;; GlobalImport
2314     "\7f"                          ;; i32
2315     "\00"                          ;; immutable
2316   )
2317   "malformed UTF-8 encoding"
2318 )
2319
2320 ;; 5-byte sequence contains 1 byte at end of string
2321 (assert_malformed
2322   (module binary
2323     "\00asm" "\01\00\00\00"
2324     "\02\0b"                       ;; import section
2325     "\01"                          ;; length 1
2326     "\04\74\65\73\74"              ;; "test"
2327     "\01\f8"                       ;; "\f8"
2328     "\03"                          ;; GlobalImport
2329     "\7f"                          ;; i32
2330     "\00"                          ;; immutable
2331   )
2332   "malformed UTF-8 encoding"
2333 )
2334
2335 ;; 5-byte sequence contains 1 byte
2336 (assert_malformed
2337   (module binary
2338     "\00asm" "\01\00\00\00"
2339     "\02\0c"                       ;; import section
2340     "\01"                          ;; length 1
2341     "\04\74\65\73\74"              ;; "test"
2342     "\02\f8\23"                    ;; "\f8#"
2343     "\03"                          ;; GlobalImport
2344     "\7f"                          ;; i32
2345     "\00"                          ;; immutable
2346   )
2347   "malformed UTF-8 encoding"
2348 )
2349
2350 ;;;; 5-byte sequence contents
2351
2352 ;; (first) malformed 5-byte prefix
2353 (assert_malformed
2354   (module binary
2355     "\00asm" "\01\00\00\00"
2356     "\02\0f"                       ;; import section
2357     "\01"                          ;; length 1
2358     "\04\74\65\73\74"              ;; "test"
2359     "\05\f8\80\80\80\80"           ;; "\f8\80\80\80\80"
2360     "\03"                          ;; GlobalImport
2361     "\7f"                          ;; i32
2362     "\00"                          ;; immutable
2363   )
2364   "malformed UTF-8 encoding"
2365 )
2366
2367 ;; (last) malformed 5-byte prefix
2368 (assert_malformed
2369   (module binary
2370     "\00asm" "\01\00\00\00"
2371     "\02\0f"                       ;; import section
2372     "\01"                          ;; length 1
2373     "\04\74\65\73\74"              ;; "test"
2374     "\05\fb\bf\bf\bf\bf"           ;; "\fb\bf\bf\bf\bf"
2375     "\03"                          ;; GlobalImport
2376     "\7f"                          ;; i32
2377     "\00"                          ;; immutable
2378   )
2379   "malformed UTF-8 encoding"
2380 )
2381
2382 ;;;; 6-byte sequences
2383
2384 ;; 6-byte sequence contains 7 bytes
2385 (assert_malformed
2386   (module binary
2387     "\00asm" "\01\00\00\00"
2388     "\02\11"                       ;; import section
2389     "\01"                          ;; length 1
2390     "\04\74\65\73\74"              ;; "test"
2391     "\07\fc\80\80\80\80\80\80"     ;; "\fc\80\80\80\80\80\80"
2392     "\03"                          ;; GlobalImport
2393     "\7f"                          ;; i32
2394     "\00"                          ;; immutable
2395   )
2396   "malformed UTF-8 encoding"
2397 )
2398
2399 ;; 6-byte sequence contains 5 bytes at end of string
2400 (assert_malformed
2401   (module binary
2402     "\00asm" "\01\00\00\00"
2403     "\02\0f"                       ;; import section
2404     "\01"                          ;; length 1
2405     "\04\74\65\73\74"              ;; "test"
2406     "\05\fc\80\80\80\80"           ;; "\fc\80\80\80\80"
2407     "\03"                          ;; GlobalImport
2408     "\7f"                          ;; i32
2409     "\00"                          ;; immutable
2410   )
2411   "malformed UTF-8 encoding"
2412 )
2413
2414 ;; 6-byte sequence contains 5 bytes
2415 (assert_malformed
2416   (module binary
2417     "\00asm" "\01\00\00\00"
2418     "\02\10"                       ;; import section
2419     "\01"                          ;; length 1
2420     "\04\74\65\73\74"              ;; "test"
2421     "\06\fc\80\80\80\80\23"        ;; "\fc\80\80\80\80#"
2422     "\03"                          ;; GlobalImport
2423     "\7f"                          ;; i32
2424     "\00"                          ;; immutable
2425   )
2426   "malformed UTF-8 encoding"
2427 )
2428
2429 ;; 6-byte sequence contains 4 bytes at end of string
2430 (assert_malformed
2431   (module binary
2432     "\00asm" "\01\00\00\00"
2433     "\02\0e"                       ;; import section
2434     "\01"                          ;; length 1
2435     "\04\74\65\73\74"              ;; "test"
2436     "\04\fc\80\80\80"              ;; "\fc\80\80\80"
2437     "\03"                          ;; GlobalImport
2438     "\7f"                          ;; i32
2439     "\00"                          ;; immutable
2440   )
2441   "malformed UTF-8 encoding"
2442 )
2443
2444 ;; 6-byte sequence contains 4 bytes
2445 (assert_malformed
2446   (module binary
2447     "\00asm" "\01\00\00\00"
2448     "\02\0f"                       ;; import section
2449     "\01"                          ;; length 1
2450     "\04\74\65\73\74"              ;; "test"
2451     "\05\fc\80\80\80\23"           ;; "\fc\80\80\80#"
2452     "\03"                          ;; GlobalImport
2453     "\7f"                          ;; i32
2454     "\00"                          ;; immutable
2455   )
2456   "malformed UTF-8 encoding"
2457 )
2458
2459 ;; 6-byte sequence contains 3 bytes at end of string
2460 (assert_malformed
2461   (module binary
2462     "\00asm" "\01\00\00\00"
2463     "\02\0d"                       ;; import section
2464     "\01"                          ;; length 1
2465     "\04\74\65\73\74"              ;; "test"
2466     "\03\fc\80\80"                 ;; "\fc\80\80"
2467     "\03"                          ;; GlobalImport
2468     "\7f"                          ;; i32
2469     "\00"                          ;; immutable
2470   )
2471   "malformed UTF-8 encoding"
2472 )
2473
2474 ;; 6-byte sequence contains 3 bytes
2475 (assert_malformed
2476   (module binary
2477     "\00asm" "\01\00\00\00"
2478     "\02\0e"                       ;; import section
2479     "\01"                          ;; length 1
2480     "\04\74\65\73\74"              ;; "test"
2481     "\04\fc\80\80\23"              ;; "\fc\80\80#"
2482     "\03"                          ;; GlobalImport
2483     "\7f"                          ;; i32
2484     "\00"                          ;; immutable
2485   )
2486   "malformed UTF-8 encoding"
2487 )
2488
2489 ;; 6-byte sequence contains 2 bytes at end of string
2490 (assert_malformed
2491   (module binary
2492     "\00asm" "\01\00\00\00"
2493     "\02\0c"                       ;; import section
2494     "\01"                          ;; length 1
2495     "\04\74\65\73\74"              ;; "test"
2496     "\02\fc\80"                    ;; "\fc\80"
2497     "\03"                          ;; GlobalImport
2498     "\7f"                          ;; i32
2499     "\00"                          ;; immutable
2500   )
2501   "malformed UTF-8 encoding"
2502 )
2503
2504 ;; 6-byte sequence contains 2 bytes
2505 (assert_malformed
2506   (module binary
2507     "\00asm" "\01\00\00\00"
2508     "\02\0d"                       ;; import section
2509     "\01"                          ;; length 1
2510     "\04\74\65\73\74"              ;; "test"
2511     "\03\fc\80\23"                 ;; "\fc\80#"
2512     "\03"                          ;; GlobalImport
2513     "\7f"                          ;; i32
2514     "\00"                          ;; immutable
2515   )
2516   "malformed UTF-8 encoding"
2517 )
2518
2519 ;; 6-byte sequence contains 1 byte at end of string
2520 (assert_malformed
2521   (module binary
2522     "\00asm" "\01\00\00\00"
2523     "\02\0b"                       ;; import section
2524     "\01"                          ;; length 1
2525     "\04\74\65\73\74"              ;; "test"
2526     "\01\fc"                       ;; "\fc"
2527     "\03"                          ;; GlobalImport
2528     "\7f"                          ;; i32
2529     "\00"                          ;; immutable
2530   )
2531   "malformed UTF-8 encoding"
2532 )
2533
2534 ;; 6-byte sequence contains 1 byte
2535 (assert_malformed
2536   (module binary
2537     "\00asm" "\01\00\00\00"
2538     "\02\0c"                       ;; import section
2539     "\01"                          ;; length 1
2540     "\04\74\65\73\74"              ;; "test"
2541     "\02\fc\23"                    ;; "\fc#"
2542     "\03"                          ;; GlobalImport
2543     "\7f"                          ;; i32
2544     "\00"                          ;; immutable
2545   )
2546   "malformed UTF-8 encoding"
2547 )
2548
2549 ;;;; 6-byte sequence contents
2550
2551 ;; (first) malformed 6-byte prefix
2552 (assert_malformed
2553   (module binary
2554     "\00asm" "\01\00\00\00"
2555     "\02\10"                       ;; import section
2556     "\01"                          ;; length 1
2557     "\04\74\65\73\74"              ;; "test"
2558     "\06\fc\80\80\80\80\80"        ;; "\fc\80\80\80\80\80"
2559     "\03"                          ;; GlobalImport
2560     "\7f"                          ;; i32
2561     "\00"                          ;; immutable
2562   )
2563   "malformed UTF-8 encoding"
2564 )
2565
2566 ;; (last) malformed 6-byte prefix
2567 (assert_malformed
2568   (module binary
2569     "\00asm" "\01\00\00\00"
2570     "\02\10"                       ;; import section
2571     "\01"                          ;; length 1
2572     "\04\74\65\73\74"              ;; "test"
2573     "\06\fd\bf\bf\bf\bf\bf"        ;; "\fd\bf\bf\bf\bf\bf"
2574     "\03"                          ;; GlobalImport
2575     "\7f"                          ;; i32
2576     "\00"                          ;; immutable
2577   )
2578   "malformed UTF-8 encoding"
2579 )
2580
2581 ;;;; Miscellaneous malformed bytes
2582
2583 ;; malformed byte
2584 (assert_malformed
2585   (module binary
2586     "\00asm" "\01\00\00\00"
2587     "\02\0b"                       ;; import section
2588     "\01"                          ;; length 1
2589     "\04\74\65\73\74"              ;; "test"
2590     "\01\fe"                       ;; "\fe"
2591     "\03"                          ;; GlobalImport
2592     "\7f"                          ;; i32
2593     "\00"                          ;; immutable
2594   )
2595   "malformed UTF-8 encoding"
2596 )
2597
2598 ;; malformed byte
2599 (assert_malformed
2600   (module binary
2601     "\00asm" "\01\00\00\00"
2602     "\02\0b"                       ;; import section
2603     "\01"                          ;; length 1
2604     "\04\74\65\73\74"              ;; "test"
2605     "\01\ff"                       ;; "\ff"
2606     "\03"                          ;; GlobalImport
2607     "\7f"                          ;; i32
2608     "\00"                          ;; immutable
2609   )
2610   "malformed UTF-8 encoding"
2611 )
2612
2613 ;; UTF-16BE BOM
2614 (assert_malformed
2615   (module binary
2616     "\00asm" "\01\00\00\00"
2617     "\02\0c"                       ;; import section
2618     "\01"                          ;; length 1
2619     "\04\74\65\73\74"              ;; "test"
2620     "\02\fe\ff"                    ;; "\fe\ff"
2621     "\03"                          ;; GlobalImport
2622     "\7f"                          ;; i32
2623     "\00"                          ;; immutable
2624   )
2625   "malformed UTF-8 encoding"
2626 )
2627
2628 ;; UTF-32BE BOM
2629 (assert_malformed
2630   (module binary
2631     "\00asm" "\01\00\00\00"
2632     "\02\0e"                       ;; import section
2633     "\01"                          ;; length 1
2634     "\04\74\65\73\74"              ;; "test"
2635     "\04\00\00\fe\ff"              ;; "\00\00\fe\ff"
2636     "\03"                          ;; GlobalImport
2637     "\7f"                          ;; i32
2638     "\00"                          ;; immutable
2639   )
2640   "malformed UTF-8 encoding"
2641 )
2642
2643 ;; UTF-16LE BOM
2644 (assert_malformed
2645   (module binary
2646     "\00asm" "\01\00\00\00"
2647     "\02\0c"                       ;; import section
2648     "\01"                          ;; length 1
2649     "\04\74\65\73\74"              ;; "test"
2650     "\02\ff\fe"                    ;; "\ff\fe"
2651     "\03"                          ;; GlobalImport
2652     "\7f"                          ;; i32
2653     "\00"                          ;; immutable
2654   )
2655   "malformed UTF-8 encoding"
2656 )
2657
2658 ;; UTF-32LE BOM
2659 (assert_malformed
2660   (module binary
2661     "\00asm" "\01\00\00\00"
2662     "\02\0e"                       ;; import section
2663     "\01"                          ;; length 1
2664     "\04\74\65\73\74"              ;; "test"
2665     "\04\ff\fe\00\00"              ;; "\ff\fe\00\00"
2666     "\03"                          ;; GlobalImport
2667     "\7f"                          ;; i32
2668     "\00"                          ;; immutable
2669   )
2670   "malformed UTF-8 encoding"
2671 )
2672