wa-lang.org/wazero@v1.0.2/internal/integration_test/spectest/v2/testdata/utf8-custom-section-id.wast (about)

     1  ;;;;;; Invalid UTF-8 custom section 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      "\00\02"                       ;; custom section
    10      "\01\80"                       ;; "\80"
    11    )
    12    "malformed UTF-8 encoding"
    13  )
    14  
    15  ;; encoding starts with (0x8f) continuation byte
    16  (assert_malformed
    17    (module binary
    18      "\00asm" "\01\00\00\00"
    19      "\00\02"                       ;; custom section
    20      "\01\8f"                       ;; "\8f"
    21    )
    22    "malformed UTF-8 encoding"
    23  )
    24  
    25  ;; encoding starts with (0x90) continuation byte
    26  (assert_malformed
    27    (module binary
    28      "\00asm" "\01\00\00\00"
    29      "\00\02"                       ;; custom section
    30      "\01\90"                       ;; "\90"
    31    )
    32    "malformed UTF-8 encoding"
    33  )
    34  
    35  ;; encoding starts with (0x9f) continuation byte
    36  (assert_malformed
    37    (module binary
    38      "\00asm" "\01\00\00\00"
    39      "\00\02"                       ;; custom section
    40      "\01\9f"                       ;; "\9f"
    41    )
    42    "malformed UTF-8 encoding"
    43  )
    44  
    45  ;; encoding starts with (0xa0) continuation byte
    46  (assert_malformed
    47    (module binary
    48      "\00asm" "\01\00\00\00"
    49      "\00\02"                       ;; custom section
    50      "\01\a0"                       ;; "\a0"
    51    )
    52    "malformed UTF-8 encoding"
    53  )
    54  
    55  ;; encoding starts with (last) continuation byte
    56  (assert_malformed
    57    (module binary
    58      "\00asm" "\01\00\00\00"
    59      "\00\02"                       ;; custom section
    60      "\01\bf"                       ;; "\bf"
    61    )
    62    "malformed UTF-8 encoding"
    63  )
    64  
    65  ;;;; 2-byte sequences
    66  
    67  ;; 2-byte sequence contains 3 bytes
    68  (assert_malformed
    69    (module binary
    70      "\00asm" "\01\00\00\00"
    71      "\00\04"                       ;; custom section
    72      "\03\c2\80\80"                 ;; "\c2\80\80"
    73    )
    74    "malformed UTF-8 encoding"
    75  )
    76  
    77  ;; 2-byte sequence contains 1 byte at end of string
    78  (assert_malformed
    79    (module binary
    80      "\00asm" "\01\00\00\00"
    81      "\00\02"                       ;; custom section
    82      "\01\c2"                       ;; "\c2"
    83    )
    84    "malformed UTF-8 encoding"
    85  )
    86  
    87  ;; 2-byte sequence contains 1 byte
    88  (assert_malformed
    89    (module binary
    90      "\00asm" "\01\00\00\00"
    91      "\00\03"                       ;; custom section
    92      "\02\c2\2e"                    ;; "\c2."
    93    )
    94    "malformed UTF-8 encoding"
    95  )
    96  
    97  ;;;; 2-byte sequence contents
    98  
    99  ;; overlong encoding after 0xc0 prefix
   100  (assert_malformed
   101    (module binary
   102      "\00asm" "\01\00\00\00"
   103      "\00\03"                       ;; custom section
   104      "\02\c0\80"                    ;; "\c0\80"
   105    )
   106    "malformed UTF-8 encoding"
   107  )
   108  
   109  ;; overlong encoding after 0xc0 prefix
   110  (assert_malformed
   111    (module binary
   112      "\00asm" "\01\00\00\00"
   113      "\00\03"                       ;; custom section
   114      "\02\c0\bf"                    ;; "\c0\bf"
   115    )
   116    "malformed UTF-8 encoding"
   117  )
   118  
   119  ;; overlong encoding after 0xc1 prefix
   120  (assert_malformed
   121    (module binary
   122      "\00asm" "\01\00\00\00"
   123      "\00\03"                       ;; custom section
   124      "\02\c1\80"                    ;; "\c1\80"
   125    )
   126    "malformed UTF-8 encoding"
   127  )
   128  
   129  ;; overlong encoding after 0xc1 prefix
   130  (assert_malformed
   131    (module binary
   132      "\00asm" "\01\00\00\00"
   133      "\00\03"                       ;; custom section
   134      "\02\c1\bf"                    ;; "\c1\bf"
   135    )
   136    "malformed UTF-8 encoding"
   137  )
   138  
   139  ;; byte after (first) 2-byte prefix not a contination byte
   140  (assert_malformed
   141    (module binary
   142      "\00asm" "\01\00\00\00"
   143      "\00\03"                       ;; custom section
   144      "\02\c2\00"                    ;; "\c2\00"
   145    )
   146    "malformed UTF-8 encoding"
   147  )
   148  
   149  ;; byte after (first) 2-byte prefix not a continuation byte
   150  (assert_malformed
   151    (module binary
   152      "\00asm" "\01\00\00\00"
   153      "\00\03"                       ;; custom section
   154      "\02\c2\7f"                    ;; "\c2\7f"
   155    )
   156    "malformed UTF-8 encoding"
   157  )
   158  
   159  ;; byte after (first) 2-byte prefix not a continuation byte
   160  (assert_malformed
   161    (module binary
   162      "\00asm" "\01\00\00\00"
   163      "\00\03"                       ;; custom section
   164      "\02\c2\c0"                    ;; "\c2\c0"
   165    )
   166    "malformed UTF-8 encoding"
   167  )
   168  
   169  ;; byte after (first) 2-byte prefix not a continuation byte
   170  (assert_malformed
   171    (module binary
   172      "\00asm" "\01\00\00\00"
   173      "\00\03"                       ;; custom section
   174      "\02\c2\fd"                    ;; "\c2\fd"
   175    )
   176    "malformed UTF-8 encoding"
   177  )
   178  
   179  ;; byte after (last) 2-byte prefix not a continuation byte
   180  (assert_malformed
   181    (module binary
   182      "\00asm" "\01\00\00\00"
   183      "\00\03"                       ;; custom section
   184      "\02\df\00"                    ;; "\df\00"
   185    )
   186    "malformed UTF-8 encoding"
   187  )
   188  
   189  ;; byte after (last) 2-byte prefix not a continuation byte
   190  (assert_malformed
   191    (module binary
   192      "\00asm" "\01\00\00\00"
   193      "\00\03"                       ;; custom section
   194      "\02\df\7f"                    ;; "\df\7f"
   195    )
   196    "malformed UTF-8 encoding"
   197  )
   198  
   199  ;; byte after (last) 2-byte prefix not a continuation byte
   200  (assert_malformed
   201    (module binary
   202      "\00asm" "\01\00\00\00"
   203      "\00\03"                       ;; custom section
   204      "\02\df\c0"                    ;; "\df\c0"
   205    )
   206    "malformed UTF-8 encoding"
   207  )
   208  
   209  ;; byte after (last) 2-byte prefix not a continuation byte
   210  (assert_malformed
   211    (module binary
   212      "\00asm" "\01\00\00\00"
   213      "\00\03"                       ;; custom section
   214      "\02\df\fd"                    ;; "\df\fd"
   215    )
   216    "malformed UTF-8 encoding"
   217  )
   218  
   219  ;;;; 3-byte sequences
   220  
   221  ;; 3-byte sequence contains 4 bytes
   222  (assert_malformed
   223    (module binary
   224      "\00asm" "\01\00\00\00"
   225      "\00\05"                       ;; custom section
   226      "\04\e1\80\80\80"              ;; "\e1\80\80\80"
   227    )
   228    "malformed UTF-8 encoding"
   229  )
   230  
   231  ;; 3-byte sequence contains 2 bytes at end of string
   232  (assert_malformed
   233    (module binary
   234      "\00asm" "\01\00\00\00"
   235      "\00\03"                       ;; custom section
   236      "\02\e1\80"                    ;; "\e1\80"
   237    )
   238    "malformed UTF-8 encoding"
   239  )
   240  
   241  ;; 3-byte sequence contains 2 bytes
   242  (assert_malformed
   243    (module binary
   244      "\00asm" "\01\00\00\00"
   245      "\00\04"                       ;; custom section
   246      "\03\e1\80\2e"                 ;; "\e1\80."
   247    )
   248    "malformed UTF-8 encoding"
   249  )
   250  
   251  ;; 3-byte sequence contains 1 byte at end of string
   252  (assert_malformed
   253    (module binary
   254      "\00asm" "\01\00\00\00"
   255      "\00\02"                       ;; custom section
   256      "\01\e1"                       ;; "\e1"
   257    )
   258    "malformed UTF-8 encoding"
   259  )
   260  
   261  ;; 3-byte sequence contains 1 byte
   262  (assert_malformed
   263    (module binary
   264      "\00asm" "\01\00\00\00"
   265      "\00\03"                       ;; custom section
   266      "\02\e1\2e"                    ;; "\e1."
   267    )
   268    "malformed UTF-8 encoding"
   269  )
   270  
   271  ;;;; 3-byte sequence contents
   272  
   273  ;; first byte after (0xe0) 3-byte prefix not a continuation byte
   274  (assert_malformed
   275    (module binary
   276      "\00asm" "\01\00\00\00"
   277      "\00\04"                       ;; custom section
   278      "\03\e0\00\a0"                 ;; "\e0\00\a0"
   279    )
   280    "malformed UTF-8 encoding"
   281  )
   282  
   283  ;; first byte after (0xe0) 3-byte prefix not a continuation byte
   284  (assert_malformed
   285    (module binary
   286      "\00asm" "\01\00\00\00"
   287      "\00\04"                       ;; custom section
   288      "\03\e0\7f\a0"                 ;; "\e0\7f\a0"
   289    )
   290    "malformed UTF-8 encoding"
   291  )
   292  
   293  ;; overlong encoding after 0xe0 prefix
   294  (assert_malformed
   295    (module binary
   296      "\00asm" "\01\00\00\00"
   297      "\00\04"                       ;; custom section
   298      "\03\e0\80\80"                 ;; "\e0\80\80"
   299    )
   300    "malformed UTF-8 encoding"
   301  )
   302  
   303  ;; overlong encoding after 0xe0 prefix
   304  (assert_malformed
   305    (module binary
   306      "\00asm" "\01\00\00\00"
   307      "\00\04"                       ;; custom section
   308      "\03\e0\80\a0"                 ;; "\e0\80\a0"
   309    )
   310    "malformed UTF-8 encoding"
   311  )
   312  
   313  ;; overlong encoding after 0xe0 prefix
   314  (assert_malformed
   315    (module binary
   316      "\00asm" "\01\00\00\00"
   317      "\00\04"                       ;; custom section
   318      "\03\e0\9f\a0"                 ;; "\e0\9f\a0"
   319    )
   320    "malformed UTF-8 encoding"
   321  )
   322  
   323  ;; overlong encoding after 0xe0 prefix
   324  (assert_malformed
   325    (module binary
   326      "\00asm" "\01\00\00\00"
   327      "\00\04"                       ;; custom section
   328      "\03\e0\9f\bf"                 ;; "\e0\9f\bf"
   329    )
   330    "malformed UTF-8 encoding"
   331  )
   332  
   333  ;; first byte after (0xe0) 3-byte prefix not a continuation byte
   334  (assert_malformed
   335    (module binary
   336      "\00asm" "\01\00\00\00"
   337      "\00\04"                       ;; custom section
   338      "\03\e0\c0\a0"                 ;; "\e0\c0\a0"
   339    )
   340    "malformed UTF-8 encoding"
   341  )
   342  
   343  ;; first byte after (0xe0) 3-byte prefix not a continuation byte
   344  (assert_malformed
   345    (module binary
   346      "\00asm" "\01\00\00\00"
   347      "\00\04"                       ;; custom section
   348      "\03\e0\fd\a0"                 ;; "\e0\fd\a0"
   349    )
   350    "malformed UTF-8 encoding"
   351  )
   352  
   353  ;; first byte after (first normal) 3-byte prefix not a continuation byte
   354  (assert_malformed
   355    (module binary
   356      "\00asm" "\01\00\00\00"
   357      "\00\04"                       ;; custom section
   358      "\03\e1\00\80"                 ;; "\e1\00\80"
   359    )
   360    "malformed UTF-8 encoding"
   361  )
   362  
   363  ;; first byte after (first normal) 3-byte prefix not a continuation byte
   364  (assert_malformed
   365    (module binary
   366      "\00asm" "\01\00\00\00"
   367      "\00\04"                       ;; custom section
   368      "\03\e1\7f\80"                 ;; "\e1\7f\80"
   369    )
   370    "malformed UTF-8 encoding"
   371  )
   372  
   373  ;; first byte after (first normal) 3-byte prefix not a continuation byte
   374  (assert_malformed
   375    (module binary
   376      "\00asm" "\01\00\00\00"
   377      "\00\04"                       ;; custom section
   378      "\03\e1\c0\80"                 ;; "\e1\c0\80"
   379    )
   380    "malformed UTF-8 encoding"
   381  )
   382  
   383  ;; first byte after (first normal) 3-byte prefix not a continuation byte
   384  (assert_malformed
   385    (module binary
   386      "\00asm" "\01\00\00\00"
   387      "\00\04"                       ;; custom section
   388      "\03\e1\fd\80"                 ;; "\e1\fd\80"
   389    )
   390    "malformed UTF-8 encoding"
   391  )
   392  
   393  ;; first byte after (normal) 3-byte prefix not a continuation byte
   394  (assert_malformed
   395    (module binary
   396      "\00asm" "\01\00\00\00"
   397      "\00\04"                       ;; custom section
   398      "\03\ec\00\80"                 ;; "\ec\00\80"
   399    )
   400    "malformed UTF-8 encoding"
   401  )
   402  
   403  ;; first byte after (normal) 3-byte prefix not a continuation byte
   404  (assert_malformed
   405    (module binary
   406      "\00asm" "\01\00\00\00"
   407      "\00\04"                       ;; custom section
   408      "\03\ec\7f\80"                 ;; "\ec\7f\80"
   409    )
   410    "malformed UTF-8 encoding"
   411  )
   412  
   413  ;; first byte after (normal) 3-byte prefix not a continuation byte
   414  (assert_malformed
   415    (module binary
   416      "\00asm" "\01\00\00\00"
   417      "\00\04"                       ;; custom section
   418      "\03\ec\c0\80"                 ;; "\ec\c0\80"
   419    )
   420    "malformed UTF-8 encoding"
   421  )
   422  
   423  ;; first byte after (normal) 3-byte prefix not a continuation byte
   424  (assert_malformed
   425    (module binary
   426      "\00asm" "\01\00\00\00"
   427      "\00\04"                       ;; custom section
   428      "\03\ec\fd\80"                 ;; "\ec\fd\80"
   429    )
   430    "malformed UTF-8 encoding"
   431  )
   432  
   433  ;; first byte after (0xed) 3-byte prefix not a continuation byte
   434  (assert_malformed
   435    (module binary
   436      "\00asm" "\01\00\00\00"
   437      "\00\04"                       ;; custom section
   438      "\03\ed\00\80"                 ;; "\ed\00\80"
   439    )
   440    "malformed UTF-8 encoding"
   441  )
   442  
   443  ;; first byte after (0xed) 3-byte prefix not a continuation byte
   444  (assert_malformed
   445    (module binary
   446      "\00asm" "\01\00\00\00"
   447      "\00\04"                       ;; custom section
   448      "\03\ed\7f\80"                 ;; "\ed\7f\80"
   449    )
   450    "malformed UTF-8 encoding"
   451  )
   452  
   453  ;; byte sequence reserved for UTF-16 surrogate half
   454  (assert_malformed
   455    (module binary
   456      "\00asm" "\01\00\00\00"
   457      "\00\04"                       ;; custom section
   458      "\03\ed\a0\80"                 ;; "\ed\a0\80"
   459    )
   460    "malformed UTF-8 encoding"
   461  )
   462  
   463  ;; byte sequence reserved for UTF-16 surrogate half
   464  (assert_malformed
   465    (module binary
   466      "\00asm" "\01\00\00\00"
   467      "\00\04"                       ;; custom section
   468      "\03\ed\a0\bf"                 ;; "\ed\a0\bf"
   469    )
   470    "malformed UTF-8 encoding"
   471  )
   472  
   473  ;; byte sequence reserved for UTF-16 surrogate half
   474  (assert_malformed
   475    (module binary
   476      "\00asm" "\01\00\00\00"
   477      "\00\04"                       ;; custom section
   478      "\03\ed\bf\80"                 ;; "\ed\bf\80"
   479    )
   480    "malformed UTF-8 encoding"
   481  )
   482  
   483  ;; byte sequence reserved for UTF-16 surrogate half
   484  (assert_malformed
   485    (module binary
   486      "\00asm" "\01\00\00\00"
   487      "\00\04"                       ;; custom section
   488      "\03\ed\bf\bf"                 ;; "\ed\bf\bf"
   489    )
   490    "malformed UTF-8 encoding"
   491  )
   492  
   493  ;; first byte after (0xed) 3-byte prefix not a continuation byte
   494  (assert_malformed
   495    (module binary
   496      "\00asm" "\01\00\00\00"
   497      "\00\04"                       ;; custom section
   498      "\03\ed\c0\80"                 ;; "\ed\c0\80"
   499    )
   500    "malformed UTF-8 encoding"
   501  )
   502  
   503  ;; first byte after (0xed) 3-byte prefix not a continuation byte
   504  (assert_malformed
   505    (module binary
   506      "\00asm" "\01\00\00\00"
   507      "\00\04"                       ;; custom section
   508      "\03\ed\fd\80"                 ;; "\ed\fd\80"
   509    )
   510    "malformed UTF-8 encoding"
   511  )
   512  
   513  ;; first byte after (normal) 3-byte prefix not a continuation byte
   514  (assert_malformed
   515    (module binary
   516      "\00asm" "\01\00\00\00"
   517      "\00\04"                       ;; custom section
   518      "\03\ee\00\80"                 ;; "\ee\00\80"
   519    )
   520    "malformed UTF-8 encoding"
   521  )
   522  
   523  ;; first byte after (normal) 3-byte prefix not a continuation byte
   524  (assert_malformed
   525    (module binary
   526      "\00asm" "\01\00\00\00"
   527      "\00\04"                       ;; custom section
   528      "\03\ee\7f\80"                 ;; "\ee\7f\80"
   529    )
   530    "malformed UTF-8 encoding"
   531  )
   532  
   533  ;; first byte after (normal) 3-byte prefix not a continuation byte
   534  (assert_malformed
   535    (module binary
   536      "\00asm" "\01\00\00\00"
   537      "\00\04"                       ;; custom section
   538      "\03\ee\c0\80"                 ;; "\ee\c0\80"
   539    )
   540    "malformed UTF-8 encoding"
   541  )
   542  
   543  ;; first byte after (normal) 3-byte prefix not a continuation byte
   544  (assert_malformed
   545    (module binary
   546      "\00asm" "\01\00\00\00"
   547      "\00\04"                       ;; custom section
   548      "\03\ee\fd\80"                 ;; "\ee\fd\80"
   549    )
   550    "malformed UTF-8 encoding"
   551  )
   552  
   553  ;; first byte after (last normal) 3-byte prefix not a continuation byte
   554  (assert_malformed
   555    (module binary
   556      "\00asm" "\01\00\00\00"
   557      "\00\04"                       ;; custom section
   558      "\03\ef\00\80"                 ;; "\ef\00\80"
   559    )
   560    "malformed UTF-8 encoding"
   561  )
   562  
   563  ;; first byte after (last normal) 3-byte prefix not a continuation byte
   564  (assert_malformed
   565    (module binary
   566      "\00asm" "\01\00\00\00"
   567      "\00\04"                       ;; custom section
   568      "\03\ef\7f\80"                 ;; "\ef\7f\80"
   569    )
   570    "malformed UTF-8 encoding"
   571  )
   572  
   573  ;; first byte after (last normal) 3-byte prefix not a continuation byte
   574  (assert_malformed
   575    (module binary
   576      "\00asm" "\01\00\00\00"
   577      "\00\04"                       ;; custom section
   578      "\03\ef\c0\80"                 ;; "\ef\c0\80"
   579    )
   580    "malformed UTF-8 encoding"
   581  )
   582  
   583  ;; first byte after (last normal) 3-byte prefix not a continuation byte
   584  (assert_malformed
   585    (module binary
   586      "\00asm" "\01\00\00\00"
   587      "\00\04"                       ;; custom section
   588      "\03\ef\fd\80"                 ;; "\ef\fd\80"
   589    )
   590    "malformed UTF-8 encoding"
   591  )
   592  
   593  ;;;; 3-byte sequence contents (third byte)
   594  
   595  ;; second byte after (0xe0) 3-byte prefix not a continuation byte
   596  (assert_malformed
   597    (module binary
   598      "\00asm" "\01\00\00\00"
   599      "\00\04"                       ;; custom section
   600      "\03\e0\a0\00"                 ;; "\e0\a0\00"
   601    )
   602    "malformed UTF-8 encoding"
   603  )
   604  
   605  ;; second byte after (0xe0) 3-byte prefix not a continuation byte
   606  (assert_malformed
   607    (module binary
   608      "\00asm" "\01\00\00\00"
   609      "\00\04"                       ;; custom section
   610      "\03\e0\a0\7f"                 ;; "\e0\a0\7f"
   611    )
   612    "malformed UTF-8 encoding"
   613  )
   614  
   615  ;; second byte after (0xe0) 3-byte prefix not a continuation byte
   616  (assert_malformed
   617    (module binary
   618      "\00asm" "\01\00\00\00"
   619      "\00\04"                       ;; custom section
   620      "\03\e0\a0\c0"                 ;; "\e0\a0\c0"
   621    )
   622    "malformed UTF-8 encoding"
   623  )
   624  
   625  ;; second byte after (0xe0) 3-byte prefix not a continuation byte
   626  (assert_malformed
   627    (module binary
   628      "\00asm" "\01\00\00\00"
   629      "\00\04"                       ;; custom section
   630      "\03\e0\a0\fd"                 ;; "\e0\a0\fd"
   631    )
   632    "malformed UTF-8 encoding"
   633  )
   634  
   635  ;; second byte after (first normal) 3-byte prefix not a continuation byte
   636  (assert_malformed
   637    (module binary
   638      "\00asm" "\01\00\00\00"
   639      "\00\04"                       ;; custom section
   640      "\03\e1\80\00"                 ;; "\e1\80\00"
   641    )
   642    "malformed UTF-8 encoding"
   643  )
   644  
   645  ;; second byte after (first normal) 3-byte prefix not a continuation byte
   646  (assert_malformed
   647    (module binary
   648      "\00asm" "\01\00\00\00"
   649      "\00\04"                       ;; custom section
   650      "\03\e1\80\7f"                 ;; "\e1\80\7f"
   651    )
   652    "malformed UTF-8 encoding"
   653  )
   654  
   655  ;; second byte after (first normal) 3-byte prefix not a continuation byte
   656  (assert_malformed
   657    (module binary
   658      "\00asm" "\01\00\00\00"
   659      "\00\04"                       ;; custom section
   660      "\03\e1\80\c0"                 ;; "\e1\80\c0"
   661    )
   662    "malformed UTF-8 encoding"
   663  )
   664  
   665  ;; second byte after (first normal) 3-byte prefix not a continuation byte
   666  (assert_malformed
   667    (module binary
   668      "\00asm" "\01\00\00\00"
   669      "\00\04"                       ;; custom section
   670      "\03\e1\80\fd"                 ;; "\e1\80\fd"
   671    )
   672    "malformed UTF-8 encoding"
   673  )
   674  
   675  ;; second byte after (normal) 3-byte prefix not a continuation byte
   676  (assert_malformed
   677    (module binary
   678      "\00asm" "\01\00\00\00"
   679      "\00\04"                       ;; custom section
   680      "\03\ec\80\00"                 ;; "\ec\80\00"
   681    )
   682    "malformed UTF-8 encoding"
   683  )
   684  
   685  ;; second byte after (normal) 3-byte prefix not a continuation byte
   686  (assert_malformed
   687    (module binary
   688      "\00asm" "\01\00\00\00"
   689      "\00\04"                       ;; custom section
   690      "\03\ec\80\7f"                 ;; "\ec\80\7f"
   691    )
   692    "malformed UTF-8 encoding"
   693  )
   694  
   695  ;; second byte after (normal) 3-byte prefix not a continuation byte
   696  (assert_malformed
   697    (module binary
   698      "\00asm" "\01\00\00\00"
   699      "\00\04"                       ;; custom section
   700      "\03\ec\80\c0"                 ;; "\ec\80\c0"
   701    )
   702    "malformed UTF-8 encoding"
   703  )
   704  
   705  ;; second byte after (normal) 3-byte prefix not a continuation byte
   706  (assert_malformed
   707    (module binary
   708      "\00asm" "\01\00\00\00"
   709      "\00\04"                       ;; custom section
   710      "\03\ec\80\fd"                 ;; "\ec\80\fd"
   711    )
   712    "malformed UTF-8 encoding"
   713  )
   714  
   715  ;; second byte after (0xed) 3-byte prefix not a continuation byte
   716  (assert_malformed
   717    (module binary
   718      "\00asm" "\01\00\00\00"
   719      "\00\04"                       ;; custom section
   720      "\03\ed\80\00"                 ;; "\ed\80\00"
   721    )
   722    "malformed UTF-8 encoding"
   723  )
   724  
   725  ;; second byte after (0xed) 3-byte prefix not a continuation byte
   726  (assert_malformed
   727    (module binary
   728      "\00asm" "\01\00\00\00"
   729      "\00\04"                       ;; custom section
   730      "\03\ed\80\7f"                 ;; "\ed\80\7f"
   731    )
   732    "malformed UTF-8 encoding"
   733  )
   734  
   735  ;; second byte after (0xed) 3-byte prefix not a continuation byte
   736  (assert_malformed
   737    (module binary
   738      "\00asm" "\01\00\00\00"
   739      "\00\04"                       ;; custom section
   740      "\03\ed\80\c0"                 ;; "\ed\80\c0"
   741    )
   742    "malformed UTF-8 encoding"
   743  )
   744  
   745  ;; second byte after (0xed) 3-byte prefix not a continuation byte
   746  (assert_malformed
   747    (module binary
   748      "\00asm" "\01\00\00\00"
   749      "\00\04"                       ;; custom section
   750      "\03\ed\80\fd"                 ;; "\ed\80\fd"
   751    )
   752    "malformed UTF-8 encoding"
   753  )
   754  
   755  ;; second byte after (normal) 3-byte prefix not a continuation byte
   756  (assert_malformed
   757    (module binary
   758      "\00asm" "\01\00\00\00"
   759      "\00\04"                       ;; custom section
   760      "\03\ee\80\00"                 ;; "\ee\80\00"
   761    )
   762    "malformed UTF-8 encoding"
   763  )
   764  
   765  ;; second byte after (normal) 3-byte prefix not a continuation byte
   766  (assert_malformed
   767    (module binary
   768      "\00asm" "\01\00\00\00"
   769      "\00\04"                       ;; custom section
   770      "\03\ee\80\7f"                 ;; "\ee\80\7f"
   771    )
   772    "malformed UTF-8 encoding"
   773  )
   774  
   775  ;; second byte after (normal) 3-byte prefix not a continuation byte
   776  (assert_malformed
   777    (module binary
   778      "\00asm" "\01\00\00\00"
   779      "\00\04"                       ;; custom section
   780      "\03\ee\80\c0"                 ;; "\ee\80\c0"
   781    )
   782    "malformed UTF-8 encoding"
   783  )
   784  
   785  ;; second byte after (normal) 3-byte prefix not a continuation byte
   786  (assert_malformed
   787    (module binary
   788      "\00asm" "\01\00\00\00"
   789      "\00\04"                       ;; custom section
   790      "\03\ee\80\fd"                 ;; "\ee\80\fd"
   791    )
   792    "malformed UTF-8 encoding"
   793  )
   794  
   795  ;; second byte after (last normal) 3-byte prefix not a continuation byte
   796  (assert_malformed
   797    (module binary
   798      "\00asm" "\01\00\00\00"
   799      "\00\04"                       ;; custom section
   800      "\03\ef\80\00"                 ;; "\ef\80\00"
   801    )
   802    "malformed UTF-8 encoding"
   803  )
   804  
   805  ;; second byte after (last normal) 3-byte prefix not a continuation byte
   806  (assert_malformed
   807    (module binary
   808      "\00asm" "\01\00\00\00"
   809      "\00\04"                       ;; custom section
   810      "\03\ef\80\7f"                 ;; "\ef\80\7f"
   811    )
   812    "malformed UTF-8 encoding"
   813  )
   814  
   815  ;; second byte after (last normal) 3-byte prefix not a continuation byte
   816  (assert_malformed
   817    (module binary
   818      "\00asm" "\01\00\00\00"
   819      "\00\04"                       ;; custom section
   820      "\03\ef\80\c0"                 ;; "\ef\80\c0"
   821    )
   822    "malformed UTF-8 encoding"
   823  )
   824  
   825  ;; second byte after (last normal) 3-byte prefix not a continuation byte
   826  (assert_malformed
   827    (module binary
   828      "\00asm" "\01\00\00\00"
   829      "\00\04"                       ;; custom section
   830      "\03\ef\80\fd"                 ;; "\ef\80\fd"
   831    )
   832    "malformed UTF-8 encoding"
   833  )
   834  
   835  ;;;; 4-byte sequences
   836  
   837  ;; 4-byte sequence contains 5 bytes
   838  (assert_malformed
   839    (module binary
   840      "\00asm" "\01\00\00\00"
   841      "\00\06"                       ;; custom section
   842      "\05\f1\80\80\80\80"           ;; "\f1\80\80\80\80"
   843    )
   844    "malformed UTF-8 encoding"
   845  )
   846  
   847  ;; 4-byte sequence contains 3 bytes at end of string
   848  (assert_malformed
   849    (module binary
   850      "\00asm" "\01\00\00\00"
   851      "\00\04"                       ;; custom section
   852      "\03\f1\80\80"                 ;; "\f1\80\80"
   853    )
   854    "malformed UTF-8 encoding"
   855  )
   856  
   857  ;; 4-byte sequence contains 3 bytes
   858  (assert_malformed
   859    (module binary
   860      "\00asm" "\01\00\00\00"
   861      "\00\05"                       ;; custom section
   862      "\04\f1\80\80\23"              ;; "\f1\80\80#"
   863    )
   864    "malformed UTF-8 encoding"
   865  )
   866  
   867  ;; 4-byte sequence contains 2 bytes at end of string
   868  (assert_malformed
   869    (module binary
   870      "\00asm" "\01\00\00\00"
   871      "\00\03"                       ;; custom section
   872      "\02\f1\80"                    ;; "\f1\80"
   873    )
   874    "malformed UTF-8 encoding"
   875  )
   876  
   877  ;; 4-byte sequence contains 2 bytes
   878  (assert_malformed
   879    (module binary
   880      "\00asm" "\01\00\00\00"
   881      "\00\04"                       ;; custom section
   882      "\03\f1\80\23"                 ;; "\f1\80#"
   883    )
   884    "malformed UTF-8 encoding"
   885  )
   886  
   887  ;; 4-byte sequence contains 1 byte at end of string
   888  (assert_malformed
   889    (module binary
   890      "\00asm" "\01\00\00\00"
   891      "\00\02"                       ;; custom section
   892      "\01\f1"                       ;; "\f1"
   893    )
   894    "malformed UTF-8 encoding"
   895  )
   896  
   897  ;; 4-byte sequence contains 1 byte
   898  (assert_malformed
   899    (module binary
   900      "\00asm" "\01\00\00\00"
   901      "\00\03"                       ;; custom section
   902      "\02\f1\23"                    ;; "\f1#"
   903    )
   904    "malformed UTF-8 encoding"
   905  )
   906  
   907  ;;;; 4-byte sequence contents
   908  
   909  ;; first byte after (0xf0) 4-byte prefix not a continuation byte
   910  (assert_malformed
   911    (module binary
   912      "\00asm" "\01\00\00\00"
   913      "\00\05"                       ;; custom section
   914      "\04\f0\00\90\90"              ;; "\f0\00\90\90"
   915    )
   916    "malformed UTF-8 encoding"
   917  )
   918  
   919  ;; first byte after (0xf0) 4-byte prefix not a continuation byte
   920  (assert_malformed
   921    (module binary
   922      "\00asm" "\01\00\00\00"
   923      "\00\05"                       ;; custom section
   924      "\04\f0\7f\90\90"              ;; "\f0\7f\90\90"
   925    )
   926    "malformed UTF-8 encoding"
   927  )
   928  
   929  ;; overlong encoding after 0xf0 prefix
   930  (assert_malformed
   931    (module binary
   932      "\00asm" "\01\00\00\00"
   933      "\00\05"                       ;; custom section
   934      "\04\f0\80\80\80"              ;; "\f0\80\80\80"
   935    )
   936    "malformed UTF-8 encoding"
   937  )
   938  
   939  ;; overlong encoding after 0xf0 prefix
   940  (assert_malformed
   941    (module binary
   942      "\00asm" "\01\00\00\00"
   943      "\00\05"                       ;; custom section
   944      "\04\f0\80\90\90"              ;; "\f0\80\90\90"
   945    )
   946    "malformed UTF-8 encoding"
   947  )
   948  
   949  ;; overlong encoding after 0xf0 prefix
   950  (assert_malformed
   951    (module binary
   952      "\00asm" "\01\00\00\00"
   953      "\00\05"                       ;; custom section
   954      "\04\f0\8f\90\90"              ;; "\f0\8f\90\90"
   955    )
   956    "malformed UTF-8 encoding"
   957  )
   958  
   959  ;; overlong encoding after 0xf0 prefix
   960  (assert_malformed
   961    (module binary
   962      "\00asm" "\01\00\00\00"
   963      "\00\05"                       ;; custom section
   964      "\04\f0\8f\bf\bf"              ;; "\f0\8f\bf\bf"
   965    )
   966    "malformed UTF-8 encoding"
   967  )
   968  
   969  ;; first byte after (0xf0) 4-byte prefix not a continuation byte
   970  (assert_malformed
   971    (module binary
   972      "\00asm" "\01\00\00\00"
   973      "\00\05"                       ;; custom section
   974      "\04\f0\c0\90\90"              ;; "\f0\c0\90\90"
   975    )
   976    "malformed UTF-8 encoding"
   977  )
   978  
   979  ;; first byte after (0xf0) 4-byte prefix not a continuation byte
   980  (assert_malformed
   981    (module binary
   982      "\00asm" "\01\00\00\00"
   983      "\00\05"                       ;; custom section
   984      "\04\f0\fd\90\90"              ;; "\f0\fd\90\90"
   985    )
   986    "malformed UTF-8 encoding"
   987  )
   988  
   989  ;; first byte after (first normal) 4-byte prefix not a continuation byte
   990  (assert_malformed
   991    (module binary
   992      "\00asm" "\01\00\00\00"
   993      "\00\05"                       ;; custom section
   994      "\04\f1\00\80\80"              ;; "\f1\00\80\80"
   995    )
   996    "malformed UTF-8 encoding"
   997  )
   998  
   999  ;; first byte after (first normal) 4-byte prefix not a continuation byte
  1000  (assert_malformed
  1001    (module binary
  1002      "\00asm" "\01\00\00\00"
  1003      "\00\05"                       ;; custom section
  1004      "\04\f1\7f\80\80"              ;; "\f1\7f\80\80"
  1005    )
  1006    "malformed UTF-8 encoding"
  1007  )
  1008  
  1009  ;; first byte after (first normal) 4-byte prefix not a continuation byte
  1010  (assert_malformed
  1011    (module binary
  1012      "\00asm" "\01\00\00\00"
  1013      "\00\05"                       ;; custom section
  1014      "\04\f1\c0\80\80"              ;; "\f1\c0\80\80"
  1015    )
  1016    "malformed UTF-8 encoding"
  1017  )
  1018  
  1019  ;; first byte after (first normal) 4-byte prefix not a continuation byte
  1020  (assert_malformed
  1021    (module binary
  1022      "\00asm" "\01\00\00\00"
  1023      "\00\05"                       ;; custom section
  1024      "\04\f1\fd\80\80"              ;; "\f1\fd\80\80"
  1025    )
  1026    "malformed UTF-8 encoding"
  1027  )
  1028  
  1029  ;; first byte after (last normal) 4-byte prefix not a continuation byte
  1030  (assert_malformed
  1031    (module binary
  1032      "\00asm" "\01\00\00\00"
  1033      "\00\05"                       ;; custom section
  1034      "\04\f3\00\80\80"              ;; "\f3\00\80\80"
  1035    )
  1036    "malformed UTF-8 encoding"
  1037  )
  1038  
  1039  ;; first byte after (last normal) 4-byte prefix not a continuation byte
  1040  (assert_malformed
  1041    (module binary
  1042      "\00asm" "\01\00\00\00"
  1043      "\00\05"                       ;; custom section
  1044      "\04\f3\7f\80\80"              ;; "\f3\7f\80\80"
  1045    )
  1046    "malformed UTF-8 encoding"
  1047  )
  1048  
  1049  ;; first byte after (last normal) 4-byte prefix not a continuation byte
  1050  (assert_malformed
  1051    (module binary
  1052      "\00asm" "\01\00\00\00"
  1053      "\00\05"                       ;; custom section
  1054      "\04\f3\c0\80\80"              ;; "\f3\c0\80\80"
  1055    )
  1056    "malformed UTF-8 encoding"
  1057  )
  1058  
  1059  ;; first byte after (last normal) 4-byte prefix not a continuation byte
  1060  (assert_malformed
  1061    (module binary
  1062      "\00asm" "\01\00\00\00"
  1063      "\00\05"                       ;; custom section
  1064      "\04\f3\fd\80\80"              ;; "\f3\fd\80\80"
  1065    )
  1066    "malformed UTF-8 encoding"
  1067  )
  1068  
  1069  ;; first byte after (0xf4) 4-byte prefix not a continuation byte
  1070  (assert_malformed
  1071    (module binary
  1072      "\00asm" "\01\00\00\00"
  1073      "\00\05"                       ;; custom section
  1074      "\04\f4\00\80\80"              ;; "\f4\00\80\80"
  1075    )
  1076    "malformed UTF-8 encoding"
  1077  )
  1078  
  1079  ;; first byte after (0xf4) 4-byte prefix not a continuation byte
  1080  (assert_malformed
  1081    (module binary
  1082      "\00asm" "\01\00\00\00"
  1083      "\00\05"                       ;; custom section
  1084      "\04\f4\7f\80\80"              ;; "\f4\7f\80\80"
  1085    )
  1086    "malformed UTF-8 encoding"
  1087  )
  1088  
  1089  ;; (first) malformed code point
  1090  (assert_malformed
  1091    (module binary
  1092      "\00asm" "\01\00\00\00"
  1093      "\00\05"                       ;; custom section
  1094      "\04\f4\90\80\80"              ;; "\f4\90\80\80"
  1095    )
  1096    "malformed UTF-8 encoding"
  1097  )
  1098  
  1099  ;; malformed code point
  1100  (assert_malformed
  1101    (module binary
  1102      "\00asm" "\01\00\00\00"
  1103      "\00\05"                       ;; custom section
  1104      "\04\f4\bf\80\80"              ;; "\f4\bf\80\80"
  1105    )
  1106    "malformed UTF-8 encoding"
  1107  )
  1108  
  1109  ;; first byte after (0xf4) 4-byte prefix not a continuation byte
  1110  (assert_malformed
  1111    (module binary
  1112      "\00asm" "\01\00\00\00"
  1113      "\00\05"                       ;; custom section
  1114      "\04\f4\c0\80\80"              ;; "\f4\c0\80\80"
  1115    )
  1116    "malformed UTF-8 encoding"
  1117  )
  1118  
  1119  ;; first byte after (0xf4) 4-byte prefix not a continuation byte
  1120  (assert_malformed
  1121    (module binary
  1122      "\00asm" "\01\00\00\00"
  1123      "\00\05"                       ;; custom section
  1124      "\04\f4\fd\80\80"              ;; "\f4\fd\80\80"
  1125    )
  1126    "malformed UTF-8 encoding"
  1127  )
  1128  
  1129  ;; (first) malformed 4-byte prefix
  1130  (assert_malformed
  1131    (module binary
  1132      "\00asm" "\01\00\00\00"
  1133      "\00\05"                       ;; custom section
  1134      "\04\f5\80\80\80"              ;; "\f5\80\80\80"
  1135    )
  1136    "malformed UTF-8 encoding"
  1137  )
  1138  
  1139  ;; (last) malformed 4-byte prefix
  1140  (assert_malformed
  1141    (module binary
  1142      "\00asm" "\01\00\00\00"
  1143      "\00\05"                       ;; custom section
  1144      "\04\f7\80\80\80"              ;; "\f7\80\80\80"
  1145    )
  1146    "malformed UTF-8 encoding"
  1147  )
  1148  
  1149  ;; (last) malformed 4-byte prefix
  1150  (assert_malformed
  1151    (module binary
  1152      "\00asm" "\01\00\00\00"
  1153      "\00\05"                       ;; custom section
  1154      "\04\f7\bf\bf\bf"              ;; "\f7\bf\bf\bf"
  1155    )
  1156    "malformed UTF-8 encoding"
  1157  )
  1158  
  1159  ;;;; 4-byte sequence contents (third byte)
  1160  
  1161  ;; second byte after (0xf0) 4-byte prefix not a continuation byte
  1162  (assert_malformed
  1163    (module binary
  1164      "\00asm" "\01\00\00\00"
  1165      "\00\05"                       ;; custom section
  1166      "\04\f0\90\00\90"              ;; "\f0\90\00\90"
  1167    )
  1168    "malformed UTF-8 encoding"
  1169  )
  1170  
  1171  ;; second byte after (0xf0) 4-byte prefix not a continuation byte
  1172  (assert_malformed
  1173    (module binary
  1174      "\00asm" "\01\00\00\00"
  1175      "\00\05"                       ;; custom section
  1176      "\04\f0\90\7f\90"              ;; "\f0\90\7f\90"
  1177    )
  1178    "malformed UTF-8 encoding"
  1179  )
  1180  
  1181  ;; second byte after (0xf0) 4-byte prefix not a continuation byte
  1182  (assert_malformed
  1183    (module binary
  1184      "\00asm" "\01\00\00\00"
  1185      "\00\05"                       ;; custom section
  1186      "\04\f0\90\c0\90"              ;; "\f0\90\c0\90"
  1187    )
  1188    "malformed UTF-8 encoding"
  1189  )
  1190  
  1191  ;; second byte after (0xf0) 4-byte prefix not a continuation byte
  1192  (assert_malformed
  1193    (module binary
  1194      "\00asm" "\01\00\00\00"
  1195      "\00\05"                       ;; custom section
  1196      "\04\f0\90\fd\90"              ;; "\f0\90\fd\90"
  1197    )
  1198    "malformed UTF-8 encoding"
  1199  )
  1200  
  1201  ;; second byte after (first normal) 4-byte prefix not a continuation byte
  1202  (assert_malformed
  1203    (module binary
  1204      "\00asm" "\01\00\00\00"
  1205      "\00\05"                       ;; custom section
  1206      "\04\f1\80\00\80"              ;; "\f1\80\00\80"
  1207    )
  1208    "malformed UTF-8 encoding"
  1209  )
  1210  
  1211  ;; second byte after (first normal) 4-byte prefix not a continuation byte
  1212  (assert_malformed
  1213    (module binary
  1214      "\00asm" "\01\00\00\00"
  1215      "\00\05"                       ;; custom section
  1216      "\04\f1\80\7f\80"              ;; "\f1\80\7f\80"
  1217    )
  1218    "malformed UTF-8 encoding"
  1219  )
  1220  
  1221  ;; second byte after (first normal) 4-byte prefix not a continuation byte
  1222  (assert_malformed
  1223    (module binary
  1224      "\00asm" "\01\00\00\00"
  1225      "\00\05"                       ;; custom section
  1226      "\04\f1\80\c0\80"              ;; "\f1\80\c0\80"
  1227    )
  1228    "malformed UTF-8 encoding"
  1229  )
  1230  
  1231  ;; second byte after (first normal) 4-byte prefix not a continuation byte
  1232  (assert_malformed
  1233    (module binary
  1234      "\00asm" "\01\00\00\00"
  1235      "\00\05"                       ;; custom section
  1236      "\04\f1\80\fd\80"              ;; "\f1\80\fd\80"
  1237    )
  1238    "malformed UTF-8 encoding"
  1239  )
  1240  
  1241  ;; second byte after (last normal) 4-byte prefix not a continuation byte
  1242  (assert_malformed
  1243    (module binary
  1244      "\00asm" "\01\00\00\00"
  1245      "\00\05"                       ;; custom section
  1246      "\04\f3\80\00\80"              ;; "\f3\80\00\80"
  1247    )
  1248    "malformed UTF-8 encoding"
  1249  )
  1250  
  1251  ;; second byte after (last normal) 4-byte prefix not a continuation byte
  1252  (assert_malformed
  1253    (module binary
  1254      "\00asm" "\01\00\00\00"
  1255      "\00\05"                       ;; custom section
  1256      "\04\f3\80\7f\80"              ;; "\f3\80\7f\80"
  1257    )
  1258    "malformed UTF-8 encoding"
  1259  )
  1260  
  1261  ;; second byte after (last normal) 4-byte prefix not a continuation byte
  1262  (assert_malformed
  1263    (module binary
  1264      "\00asm" "\01\00\00\00"
  1265      "\00\05"                       ;; custom section
  1266      "\04\f3\80\c0\80"              ;; "\f3\80\c0\80"
  1267    )
  1268    "malformed UTF-8 encoding"
  1269  )
  1270  
  1271  ;; second byte after (last normal) 4-byte prefix not a continuation byte
  1272  (assert_malformed
  1273    (module binary
  1274      "\00asm" "\01\00\00\00"
  1275      "\00\05"                       ;; custom section
  1276      "\04\f3\80\fd\80"              ;; "\f3\80\fd\80"
  1277    )
  1278    "malformed UTF-8 encoding"
  1279  )
  1280  
  1281  ;; second byte after (0xf4) 4-byte prefix not a continuation byte
  1282  (assert_malformed
  1283    (module binary
  1284      "\00asm" "\01\00\00\00"
  1285      "\00\05"                       ;; custom section
  1286      "\04\f4\80\00\80"              ;; "\f4\80\00\80"
  1287    )
  1288    "malformed UTF-8 encoding"
  1289  )
  1290  
  1291  ;; second byte after (0xf4) 4-byte prefix not a continuation byte
  1292  (assert_malformed
  1293    (module binary
  1294      "\00asm" "\01\00\00\00"
  1295      "\00\05"                       ;; custom section
  1296      "\04\f4\80\7f\80"              ;; "\f4\80\7f\80"
  1297    )
  1298    "malformed UTF-8 encoding"
  1299  )
  1300  
  1301  ;; second byte after (0xf4) 4-byte prefix not a continuation byte
  1302  (assert_malformed
  1303    (module binary
  1304      "\00asm" "\01\00\00\00"
  1305      "\00\05"                       ;; custom section
  1306      "\04\f4\80\c0\80"              ;; "\f4\80\c0\80"
  1307    )
  1308    "malformed UTF-8 encoding"
  1309  )
  1310  
  1311  ;; second byte after (0xf4) 4-byte prefix not a continuation byte
  1312  (assert_malformed
  1313    (module binary
  1314      "\00asm" "\01\00\00\00"
  1315      "\00\05"                       ;; custom section
  1316      "\04\f4\80\fd\80"              ;; "\f4\80\fd\80"
  1317    )
  1318    "malformed UTF-8 encoding"
  1319  )
  1320  
  1321  ;;;; 4-byte sequence contents (fourth byte)
  1322  
  1323  ;; third byte after (0xf0) 4-byte prefix not a continuation byte
  1324  (assert_malformed
  1325    (module binary
  1326      "\00asm" "\01\00\00\00"
  1327      "\00\05"                       ;; custom section
  1328      "\04\f0\90\90\00"              ;; "\f0\90\90\00"
  1329    )
  1330    "malformed UTF-8 encoding"
  1331  )
  1332  
  1333  ;; third byte after (0xf0) 4-byte prefix not a continuation byte
  1334  (assert_malformed
  1335    (module binary
  1336      "\00asm" "\01\00\00\00"
  1337      "\00\05"                       ;; custom section
  1338      "\04\f0\90\90\7f"              ;; "\f0\90\90\7f"
  1339    )
  1340    "malformed UTF-8 encoding"
  1341  )
  1342  
  1343  ;; third byte after (0xf0) 4-byte prefix not a continuation byte
  1344  (assert_malformed
  1345    (module binary
  1346      "\00asm" "\01\00\00\00"
  1347      "\00\05"                       ;; custom section
  1348      "\04\f0\90\90\c0"              ;; "\f0\90\90\c0"
  1349    )
  1350    "malformed UTF-8 encoding"
  1351  )
  1352  
  1353  ;; third byte after (0xf0) 4-byte prefix not a continuation byte
  1354  (assert_malformed
  1355    (module binary
  1356      "\00asm" "\01\00\00\00"
  1357      "\00\05"                       ;; custom section
  1358      "\04\f0\90\90\fd"              ;; "\f0\90\90\fd"
  1359    )
  1360    "malformed UTF-8 encoding"
  1361  )
  1362  
  1363  ;; third byte after (first normal) 4-byte prefix not a continuation byte
  1364  (assert_malformed
  1365    (module binary
  1366      "\00asm" "\01\00\00\00"
  1367      "\00\05"                       ;; custom section
  1368      "\04\f1\80\80\00"              ;; "\f1\80\80\00"
  1369    )
  1370    "malformed UTF-8 encoding"
  1371  )
  1372  
  1373  ;; third byte after (first normal) 4-byte prefix not a continuation byte
  1374  (assert_malformed
  1375    (module binary
  1376      "\00asm" "\01\00\00\00"
  1377      "\00\05"                       ;; custom section
  1378      "\04\f1\80\80\7f"              ;; "\f1\80\80\7f"
  1379    )
  1380    "malformed UTF-8 encoding"
  1381  )
  1382  
  1383  ;; third byte after (first normal) 4-byte prefix not a continuation byte
  1384  (assert_malformed
  1385    (module binary
  1386      "\00asm" "\01\00\00\00"
  1387      "\00\05"                       ;; custom section
  1388      "\04\f1\80\80\c0"              ;; "\f1\80\80\c0"
  1389    )
  1390    "malformed UTF-8 encoding"
  1391  )
  1392  
  1393  ;; third byte after (first normal) 4-byte prefix not a continuation byte
  1394  (assert_malformed
  1395    (module binary
  1396      "\00asm" "\01\00\00\00"
  1397      "\00\05"                       ;; custom section
  1398      "\04\f1\80\80\fd"              ;; "\f1\80\80\fd"
  1399    )
  1400    "malformed UTF-8 encoding"
  1401  )
  1402  
  1403  ;; third byte after (last normal) 4-byte prefix not a continuation byte
  1404  (assert_malformed
  1405    (module binary
  1406      "\00asm" "\01\00\00\00"
  1407      "\00\05"                       ;; custom section
  1408      "\04\f3\80\80\00"              ;; "\f3\80\80\00"
  1409    )
  1410    "malformed UTF-8 encoding"
  1411  )
  1412  
  1413  ;; third byte after (last normal) 4-byte prefix not a continuation byte
  1414  (assert_malformed
  1415    (module binary
  1416      "\00asm" "\01\00\00\00"
  1417      "\00\05"                       ;; custom section
  1418      "\04\f3\80\80\7f"              ;; "\f3\80\80\7f"
  1419    )
  1420    "malformed UTF-8 encoding"
  1421  )
  1422  
  1423  ;; third byte after (last normal) 4-byte prefix not a continuation byte
  1424  (assert_malformed
  1425    (module binary
  1426      "\00asm" "\01\00\00\00"
  1427      "\00\05"                       ;; custom section
  1428      "\04\f3\80\80\c0"              ;; "\f3\80\80\c0"
  1429    )
  1430    "malformed UTF-8 encoding"
  1431  )
  1432  
  1433  ;; third byte after (last normal) 4-byte prefix not a continuation byte
  1434  (assert_malformed
  1435    (module binary
  1436      "\00asm" "\01\00\00\00"
  1437      "\00\05"                       ;; custom section
  1438      "\04\f3\80\80\fd"              ;; "\f3\80\80\fd"
  1439    )
  1440    "malformed UTF-8 encoding"
  1441  )
  1442  
  1443  ;; third byte after (0xf4) 4-byte prefix not a continuation byte
  1444  (assert_malformed
  1445    (module binary
  1446      "\00asm" "\01\00\00\00"
  1447      "\00\05"                       ;; custom section
  1448      "\04\f4\80\80\00"              ;; "\f4\80\80\00"
  1449    )
  1450    "malformed UTF-8 encoding"
  1451  )
  1452  
  1453  ;; third byte after (0xf4) 4-byte prefix not a continuation byte
  1454  (assert_malformed
  1455    (module binary
  1456      "\00asm" "\01\00\00\00"
  1457      "\00\05"                       ;; custom section
  1458      "\04\f4\80\80\7f"              ;; "\f4\80\80\7f"
  1459    )
  1460    "malformed UTF-8 encoding"
  1461  )
  1462  
  1463  ;; third byte after (0xf4) 4-byte prefix not a continuation byte
  1464  (assert_malformed
  1465    (module binary
  1466      "\00asm" "\01\00\00\00"
  1467      "\00\05"                       ;; custom section
  1468      "\04\f4\80\80\c0"              ;; "\f4\80\80\c0"
  1469    )
  1470    "malformed UTF-8 encoding"
  1471  )
  1472  
  1473  ;; third byte after (0xf4) 4-byte prefix not a continuation byte
  1474  (assert_malformed
  1475    (module binary
  1476      "\00asm" "\01\00\00\00"
  1477      "\00\05"                       ;; custom section
  1478      "\04\f4\80\80\fd"              ;; "\f4\80\80\fd"
  1479    )
  1480    "malformed UTF-8 encoding"
  1481  )
  1482  
  1483  ;;;; 5-byte sequences
  1484  
  1485  ;; 5-byte sequence contains 6 bytes
  1486  (assert_malformed
  1487    (module binary
  1488      "\00asm" "\01\00\00\00"
  1489      "\00\07"                       ;; custom section
  1490      "\06\f8\80\80\80\80\80"        ;; "\f8\80\80\80\80\80"
  1491    )
  1492    "malformed UTF-8 encoding"
  1493  )
  1494  
  1495  ;; 5-byte sequence contains 4 bytes at end of string
  1496  (assert_malformed
  1497    (module binary
  1498      "\00asm" "\01\00\00\00"
  1499      "\00\05"                       ;; custom section
  1500      "\04\f8\80\80\80"              ;; "\f8\80\80\80"
  1501    )
  1502    "malformed UTF-8 encoding"
  1503  )
  1504  
  1505  ;; 5-byte sequence contains 4 bytes
  1506  (assert_malformed
  1507    (module binary
  1508      "\00asm" "\01\00\00\00"
  1509      "\00\06"                       ;; custom section
  1510      "\05\f8\80\80\80\23"           ;; "\f8\80\80\80#"
  1511    )
  1512    "malformed UTF-8 encoding"
  1513  )
  1514  
  1515  ;; 5-byte sequence contains 3 bytes at end of string
  1516  (assert_malformed
  1517    (module binary
  1518      "\00asm" "\01\00\00\00"
  1519      "\00\04"                       ;; custom section
  1520      "\03\f8\80\80"                 ;; "\f8\80\80"
  1521    )
  1522    "malformed UTF-8 encoding"
  1523  )
  1524  
  1525  ;; 5-byte sequence contains 3 bytes
  1526  (assert_malformed
  1527    (module binary
  1528      "\00asm" "\01\00\00\00"
  1529      "\00\05"                       ;; custom section
  1530      "\04\f8\80\80\23"              ;; "\f8\80\80#"
  1531    )
  1532    "malformed UTF-8 encoding"
  1533  )
  1534  
  1535  ;; 5-byte sequence contains 2 bytes at end of string
  1536  (assert_malformed
  1537    (module binary
  1538      "\00asm" "\01\00\00\00"
  1539      "\00\03"                       ;; custom section
  1540      "\02\f8\80"                    ;; "\f8\80"
  1541    )
  1542    "malformed UTF-8 encoding"
  1543  )
  1544  
  1545  ;; 5-byte sequence contains 2 bytes
  1546  (assert_malformed
  1547    (module binary
  1548      "\00asm" "\01\00\00\00"
  1549      "\00\04"                       ;; custom section
  1550      "\03\f8\80\23"                 ;; "\f8\80#"
  1551    )
  1552    "malformed UTF-8 encoding"
  1553  )
  1554  
  1555  ;; 5-byte sequence contains 1 byte at end of string
  1556  (assert_malformed
  1557    (module binary
  1558      "\00asm" "\01\00\00\00"
  1559      "\00\02"                       ;; custom section
  1560      "\01\f8"                       ;; "\f8"
  1561    )
  1562    "malformed UTF-8 encoding"
  1563  )
  1564  
  1565  ;; 5-byte sequence contains 1 byte
  1566  (assert_malformed
  1567    (module binary
  1568      "\00asm" "\01\00\00\00"
  1569      "\00\03"                       ;; custom section
  1570      "\02\f8\23"                    ;; "\f8#"
  1571    )
  1572    "malformed UTF-8 encoding"
  1573  )
  1574  
  1575  ;;;; 5-byte sequence contents
  1576  
  1577  ;; (first) malformed 5-byte prefix
  1578  (assert_malformed
  1579    (module binary
  1580      "\00asm" "\01\00\00\00"
  1581      "\00\06"                       ;; custom section
  1582      "\05\f8\80\80\80\80"           ;; "\f8\80\80\80\80"
  1583    )
  1584    "malformed UTF-8 encoding"
  1585  )
  1586  
  1587  ;; (last) malformed 5-byte prefix
  1588  (assert_malformed
  1589    (module binary
  1590      "\00asm" "\01\00\00\00"
  1591      "\00\06"                       ;; custom section
  1592      "\05\fb\bf\bf\bf\bf"           ;; "\fb\bf\bf\bf\bf"
  1593    )
  1594    "malformed UTF-8 encoding"
  1595  )
  1596  
  1597  ;;;; 6-byte sequences
  1598  
  1599  ;; 6-byte sequence contains 7 bytes
  1600  (assert_malformed
  1601    (module binary
  1602      "\00asm" "\01\00\00\00"
  1603      "\00\08"                       ;; custom section
  1604      "\07\fc\80\80\80\80\80\80"     ;; "\fc\80\80\80\80\80\80"
  1605    )
  1606    "malformed UTF-8 encoding"
  1607  )
  1608  
  1609  ;; 6-byte sequence contains 5 bytes at end of string
  1610  (assert_malformed
  1611    (module binary
  1612      "\00asm" "\01\00\00\00"
  1613      "\00\06"                       ;; custom section
  1614      "\05\fc\80\80\80\80"           ;; "\fc\80\80\80\80"
  1615    )
  1616    "malformed UTF-8 encoding"
  1617  )
  1618  
  1619  ;; 6-byte sequence contains 5 bytes
  1620  (assert_malformed
  1621    (module binary
  1622      "\00asm" "\01\00\00\00"
  1623      "\00\07"                       ;; custom section
  1624      "\06\fc\80\80\80\80\23"        ;; "\fc\80\80\80\80#"
  1625    )
  1626    "malformed UTF-8 encoding"
  1627  )
  1628  
  1629  ;; 6-byte sequence contains 4 bytes at end of string
  1630  (assert_malformed
  1631    (module binary
  1632      "\00asm" "\01\00\00\00"
  1633      "\00\05"                       ;; custom section
  1634      "\04\fc\80\80\80"              ;; "\fc\80\80\80"
  1635    )
  1636    "malformed UTF-8 encoding"
  1637  )
  1638  
  1639  ;; 6-byte sequence contains 4 bytes
  1640  (assert_malformed
  1641    (module binary
  1642      "\00asm" "\01\00\00\00"
  1643      "\00\06"                       ;; custom section
  1644      "\05\fc\80\80\80\23"           ;; "\fc\80\80\80#"
  1645    )
  1646    "malformed UTF-8 encoding"
  1647  )
  1648  
  1649  ;; 6-byte sequence contains 3 bytes at end of string
  1650  (assert_malformed
  1651    (module binary
  1652      "\00asm" "\01\00\00\00"
  1653      "\00\04"                       ;; custom section
  1654      "\03\fc\80\80"                 ;; "\fc\80\80"
  1655    )
  1656    "malformed UTF-8 encoding"
  1657  )
  1658  
  1659  ;; 6-byte sequence contains 3 bytes
  1660  (assert_malformed
  1661    (module binary
  1662      "\00asm" "\01\00\00\00"
  1663      "\00\05"                       ;; custom section
  1664      "\04\fc\80\80\23"              ;; "\fc\80\80#"
  1665    )
  1666    "malformed UTF-8 encoding"
  1667  )
  1668  
  1669  ;; 6-byte sequence contains 2 bytes at end of string
  1670  (assert_malformed
  1671    (module binary
  1672      "\00asm" "\01\00\00\00"
  1673      "\00\03"                       ;; custom section
  1674      "\02\fc\80"                    ;; "\fc\80"
  1675    )
  1676    "malformed UTF-8 encoding"
  1677  )
  1678  
  1679  ;; 6-byte sequence contains 2 bytes
  1680  (assert_malformed
  1681    (module binary
  1682      "\00asm" "\01\00\00\00"
  1683      "\00\04"                       ;; custom section
  1684      "\03\fc\80\23"                 ;; "\fc\80#"
  1685    )
  1686    "malformed UTF-8 encoding"
  1687  )
  1688  
  1689  ;; 6-byte sequence contains 1 byte at end of string
  1690  (assert_malformed
  1691    (module binary
  1692      "\00asm" "\01\00\00\00"
  1693      "\00\02"                       ;; custom section
  1694      "\01\fc"                       ;; "\fc"
  1695    )
  1696    "malformed UTF-8 encoding"
  1697  )
  1698  
  1699  ;; 6-byte sequence contains 1 byte
  1700  (assert_malformed
  1701    (module binary
  1702      "\00asm" "\01\00\00\00"
  1703      "\00\03"                       ;; custom section
  1704      "\02\fc\23"                    ;; "\fc#"
  1705    )
  1706    "malformed UTF-8 encoding"
  1707  )
  1708  
  1709  ;;;; 6-byte sequence contents
  1710  
  1711  ;; (first) malformed 6-byte prefix
  1712  (assert_malformed
  1713    (module binary
  1714      "\00asm" "\01\00\00\00"
  1715      "\00\07"                       ;; custom section
  1716      "\06\fc\80\80\80\80\80"        ;; "\fc\80\80\80\80\80"
  1717    )
  1718    "malformed UTF-8 encoding"
  1719  )
  1720  
  1721  ;; (last) malformed 6-byte prefix
  1722  (assert_malformed
  1723    (module binary
  1724      "\00asm" "\01\00\00\00"
  1725      "\00\07"                       ;; custom section
  1726      "\06\fd\bf\bf\bf\bf\bf"        ;; "\fd\bf\bf\bf\bf\bf"
  1727    )
  1728    "malformed UTF-8 encoding"
  1729  )
  1730  
  1731  ;;;; Miscellaneous malformed bytes
  1732  
  1733  ;; malformed byte
  1734  (assert_malformed
  1735    (module binary
  1736      "\00asm" "\01\00\00\00"
  1737      "\00\02"                       ;; custom section
  1738      "\01\fe"                       ;; "\fe"
  1739    )
  1740    "malformed UTF-8 encoding"
  1741  )
  1742  
  1743  ;; malformed byte
  1744  (assert_malformed
  1745    (module binary
  1746      "\00asm" "\01\00\00\00"
  1747      "\00\02"                       ;; custom section
  1748      "\01\ff"                       ;; "\ff"
  1749    )
  1750    "malformed UTF-8 encoding"
  1751  )
  1752  
  1753  ;; UTF-16BE BOM
  1754  (assert_malformed
  1755    (module binary
  1756      "\00asm" "\01\00\00\00"
  1757      "\00\03"                       ;; custom section
  1758      "\02\fe\ff"                    ;; "\fe\ff"
  1759    )
  1760    "malformed UTF-8 encoding"
  1761  )
  1762  
  1763  ;; UTF-32BE BOM
  1764  (assert_malformed
  1765    (module binary
  1766      "\00asm" "\01\00\00\00"
  1767      "\00\05"                       ;; custom section
  1768      "\04\00\00\fe\ff"              ;; "\00\00\fe\ff"
  1769    )
  1770    "malformed UTF-8 encoding"
  1771  )
  1772  
  1773  ;; UTF-16LE BOM
  1774  (assert_malformed
  1775    (module binary
  1776      "\00asm" "\01\00\00\00"
  1777      "\00\03"                       ;; custom section
  1778      "\02\ff\fe"                    ;; "\ff\fe"
  1779    )
  1780    "malformed UTF-8 encoding"
  1781  )
  1782  
  1783  ;; UTF-32LE BOM
  1784  (assert_malformed
  1785    (module binary
  1786      "\00asm" "\01\00\00\00"
  1787      "\00\05"                       ;; custom section
  1788      "\04\ff\fe\00\00"              ;; "\ff\fe\00\00"
  1789    )
  1790    "malformed UTF-8 encoding"
  1791  )
  1792