mirror of
https://github.com/fluencelabs/wasmer
synced 2025-03-30 06:21:04 +00:00
964 lines
37 KiB
Plaintext
964 lines
37 KiB
Plaintext
;; Unsigned LEB128 can have non-minimal length
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\05\04\01" ;; Memory section with 1 entry
|
|
"\00\82\00" ;; no max, minimum 2
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\05\07\01" ;; Memory section with 1 entry
|
|
"\00\82\80\80\80\00" ;; no max, minimum 2
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\05\06\01" ;; Memory section with 1 entry
|
|
"\01\82\00" ;; minimum 2
|
|
"\82\00" ;; max 2
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\05\09\01" ;; Memory section with 1 entry
|
|
"\01\82\00" ;; minimum 2
|
|
"\82\80\80\80\00" ;; max 2
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\05\03\01" ;; Memory section with 1 entry
|
|
"\00\00" ;; no max, minimum 0
|
|
"\0b\07\01" ;; Data section with 1 entry
|
|
"\80\00" ;; Memory index 0, encoded with 2 bytes
|
|
"\41\00\0b\00" ;; (i32.const 0) with contents ""
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\04\04\01" ;; Table section with 1 entry
|
|
"\70\00\00" ;; no max, minimum 0, funcref
|
|
"\09\07\01" ;; Element section with 1 entry
|
|
"\80\00" ;; Table index 0, encoded with 2 bytes
|
|
"\41\00\0b\00" ;; (i32.const 0) with no elements
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\00" ;; custom section
|
|
"\8a\00" ;; section size 10, encoded with 2 bytes
|
|
"\01" ;; name byte count
|
|
"1" ;; name
|
|
"23456789" ;; sequence of bytes
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\00" ;; custom section
|
|
"\0b" ;; section size
|
|
"\88\00" ;; name byte count 8, encoded with 2 bytes
|
|
"12345678" ;; name
|
|
"9" ;; sequence of bytes
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\08\01" ;; type section
|
|
"\60" ;; func type
|
|
"\82\00" ;; num params 2, encoded with 2 bytes
|
|
"\7f\7e" ;; param type
|
|
"\01" ;; num results
|
|
"\7f" ;; result type
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\08\01" ;; type section
|
|
"\60" ;; func type
|
|
"\02" ;; num params
|
|
"\7f\7e" ;; param type
|
|
"\81\00" ;; num results 1, encoded with 2 bytes
|
|
"\7f" ;; result type
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\05\01" ;; type section
|
|
"\60\01\7f\00" ;; function type
|
|
"\02\17\01" ;; import section
|
|
"\88\00" ;; module name length 8, encoded with 2 bytes
|
|
"\73\70\65\63\74\65\73\74" ;; module name
|
|
"\09" ;; entity name length
|
|
"\70\72\69\6e\74\5f\69\33\32" ;; entity name
|
|
"\00" ;; import kind
|
|
"\00" ;; import signature index
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\05\01" ;; type section
|
|
"\60\01\7f\00" ;; function type
|
|
"\02\17\01" ;; import section
|
|
"\08" ;; module name length
|
|
"\73\70\65\63\74\65\73\74" ;; module name
|
|
"\89\00" ;; entity name length 9, encoded with 2 bytes
|
|
"\70\72\69\6e\74\5f\69\33\32" ;; entity name
|
|
"\00" ;; import kind
|
|
"\00" ;; import signature index
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\05\01" ;; type section
|
|
"\60\01\7f\00" ;; function type
|
|
"\02\17\01" ;; import section
|
|
"\08" ;; module name length
|
|
"\73\70\65\63\74\65\73\74" ;; module name
|
|
"\09" ;; entity name length 9
|
|
"\70\72\69\6e\74\5f\69\33\32" ;; entity name
|
|
"\00" ;; import kind
|
|
"\80\00" ;; import signature index, encoded with 2 bytes
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01" ;; type section
|
|
"\60\00\00" ;; function type
|
|
"\03\03\01" ;; function section
|
|
"\80\00" ;; function 0 signature index, encoded with 2 bytes
|
|
"\0a\04\01" ;; code section
|
|
"\02\00\0b" ;; function body
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01" ;; type section
|
|
"\60\00\00" ;; fun type
|
|
"\03\02\01\00" ;; function section
|
|
"\07\07\01" ;; export section
|
|
"\82\00" ;; string length 2, encoded with 2 bytes
|
|
"\66\31" ;; export name f1
|
|
"\00" ;; export kind
|
|
"\00" ;; export func index
|
|
"\0a\04\01" ;; code section
|
|
"\02\00\0b" ;; function body
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01" ;; type section
|
|
"\60\00\00" ;; fun type
|
|
"\03\02\01\00" ;; function section
|
|
"\07\07\01" ;; export section
|
|
"\02" ;; string length 2
|
|
"\66\31" ;; export name f1
|
|
"\00" ;; export kind
|
|
"\80\00" ;; export func index, encoded with 2 bytes
|
|
"\0a\04\01" ;; code section
|
|
"\02\00\0b" ;; function body
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01" ;; type section
|
|
"\60\00\00" ;; fun type
|
|
"\03\02\01\00" ;; function section
|
|
"\0a" ;; code section
|
|
"\05" ;; section size
|
|
"\81\00" ;; num functions, encoded with 2 bytes
|
|
"\02\00\0b" ;; function body
|
|
)
|
|
|
|
;; Signed LEB128 can have non-minimal length
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\07\01" ;; Global section with 1 entry
|
|
"\7f\00" ;; i32, immutable
|
|
"\41\80\00" ;; i32.const 0
|
|
"\0b" ;; end
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\07\01" ;; Global section with 1 entry
|
|
"\7f\00" ;; i32, immutable
|
|
"\41\ff\7f" ;; i32.const -1
|
|
"\0b" ;; end
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\0a\01" ;; Global section with 1 entry
|
|
"\7f\00" ;; i32, immutable
|
|
"\41\80\80\80\80\00" ;; i32.const 0
|
|
"\0b" ;; end
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\0a\01" ;; Global section with 1 entry
|
|
"\7f\00" ;; i32, immutable
|
|
"\41\ff\ff\ff\ff\7f" ;; i32.const -1
|
|
"\0b" ;; end
|
|
)
|
|
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\07\01" ;; Global section with 1 entry
|
|
"\7e\00" ;; i64, immutable
|
|
"\42\80\00" ;; i64.const 0 with unused bits set
|
|
"\0b" ;; end
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\07\01" ;; Global section with 1 entry
|
|
"\7e\00" ;; i64, immutable
|
|
"\42\ff\7f" ;; i64.const -1 with unused bits unset
|
|
"\0b" ;; end
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\0f\01" ;; Global section with 1 entry
|
|
"\7e\00" ;; i64, immutable
|
|
"\42\80\80\80\80\80\80\80\80\80\00" ;; i64.const 0 with unused bits set
|
|
"\0b" ;; end
|
|
)
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\0f\01" ;; Global section with 1 entry
|
|
"\7e\00" ;; i64, immutable
|
|
"\42\ff\ff\ff\ff\ff\ff\ff\ff\ff\7f" ;; i64.const -1 with unused bits unset
|
|
"\0b" ;; end
|
|
)
|
|
|
|
;; Unsigned LEB128 must not be overlong
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\05\08\01" ;; Memory section with 1 entry
|
|
"\00\82\80\80\80\80\00" ;; no max, minimum 2 with one byte too many
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\05\0a\01" ;; Memory section with 1 entry
|
|
"\01\82\00" ;; minimum 2
|
|
"\82\80\80\80\80\00" ;; max 2 with one byte too many
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\05\03\01" ;; Memory section with 1 entry
|
|
"\00\00" ;; no max, minimum 0
|
|
"\0b\0b\01" ;; Data section with 1 entry
|
|
"\80\80\80\80\80\00" ;; Memory index 0 with one byte too many
|
|
"\41\00\0b\00" ;; (i32.const 0) with contents ""
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\04\04\01" ;; Table section with 1 entry
|
|
"\70\00\00" ;; no max, minimum 0, funcref
|
|
"\09\0b\01" ;; Element section with 1 entry
|
|
"\80\80\80\80\80\00" ;; Table index 0 with one byte too many
|
|
"\41\00\0b\00" ;; (i32.const 0) with no elements
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\00" ;; custom section
|
|
"\83\80\80\80\80\00" ;; section size 3 with one byte too many
|
|
"\01" ;; name byte count
|
|
"1" ;; name
|
|
"2" ;; sequence of bytes
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\00" ;; custom section
|
|
"\0A" ;; section size
|
|
"\83\80\80\80\80\00" ;; name byte count 3 with one byte too many
|
|
"123" ;; name
|
|
"4" ;; sequence of bytes
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\0c\01" ;; type section
|
|
"\60" ;; func type
|
|
"\82\80\80\80\80\00" ;; num params 2 with one byte too many
|
|
"\7f\7e" ;; param type
|
|
"\01" ;; num result
|
|
"\7f" ;; result type
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\08\01" ;; type section
|
|
"\60" ;; func type
|
|
"\02" ;; num params
|
|
"\7f\7e" ;; param type
|
|
"\81\80\80\80\80\00" ;; num result 1 with one byte too many
|
|
"\7f" ;; result type
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\05\01" ;; type section
|
|
"\60\01\7f\00" ;; function type
|
|
"\02\1b\01" ;; import section
|
|
"\88\80\80\80\80\00" ;; module name length 8 with one byte too many
|
|
"\73\70\65\63\74\65\73\74" ;; module name
|
|
"\09" ;; entity name length
|
|
"\70\72\69\6e\74\5f\69\33\32" ;; entity name
|
|
"\00" ;; import kind
|
|
"\00" ;; import signature index
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\05\01" ;; type section
|
|
"\60\01\7f\00" ;; function type
|
|
"\02\1b\01" ;; import section
|
|
"\08" ;; module name length
|
|
"\73\70\65\63\74\65\73\74" ;; module name
|
|
"\89\80\80\80\80\00" ;; entity name length 9 with one byte too many
|
|
"\70\72\69\6e\74\5f\69\33\32" ;; entity name
|
|
"\00" ;; import kind
|
|
"\00" ;; import signature index
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\05\01" ;; type section
|
|
"\60\01\7f\00" ;; function type
|
|
"\02\1b\01" ;; import section
|
|
"\08" ;; module name length
|
|
"\73\70\65\63\74\65\73\74" ;; module name
|
|
"\09" ;; entity name length 9
|
|
"\70\72\69\6e\74\5f\69\33\32" ;; entity name
|
|
"\00" ;; import kind
|
|
"\80\80\80\80\80\00" ;; import signature index 0 with one byte too many
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01" ;; type section
|
|
"\60\00\00" ;; function type
|
|
"\03\03\01" ;; function section
|
|
"\80\80\80\80\80\00" ;; function 0 signature index with one byte too many
|
|
"\0a\04\01" ;; code section
|
|
"\02\00\0b" ;; function body
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01" ;; type section
|
|
"\60\00\00" ;; fun type
|
|
"\03\02\01\00" ;; function section
|
|
"\07\0b\01" ;; export section
|
|
"\82\80\80\80\80\00" ;; string length 2 with one byte too many
|
|
"\66\31" ;; export name f1
|
|
"\00" ;; export kind
|
|
"\00" ;; export func index
|
|
"\0a\04\01" ;; code section
|
|
"\02\00\0b" ;; function body
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01" ;; type section
|
|
"\60\00\00" ;; fun type
|
|
"\03\02\01\00" ;; function section
|
|
"\07\0b\01" ;; export section
|
|
"\02" ;; string length 2
|
|
"\66\31" ;; export name f1
|
|
"\00" ;; export kind
|
|
"\80\80\80\80\80\00" ;; export func index 0 with one byte too many
|
|
"\0a\04\01" ;; code section
|
|
"\02\00\0b" ;; function body
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01" ;; type section
|
|
"\60\00\00" ;; fun type
|
|
"\03\02\01\00" ;; function section
|
|
"\0a" ;; code section
|
|
"\05" ;; section size
|
|
"\81\80\80\80\80\00" ;; num functions 1 with one byte too many
|
|
"\02\00\0b" ;; function body
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01\60\00\00" ;; Type section
|
|
"\03\02\01\00" ;; Function section
|
|
"\05\03\01\00\01" ;; Memory section
|
|
"\0a\11\01" ;; Code section
|
|
;; function 0
|
|
"\0f\01\01" ;; local type count
|
|
"\7f" ;; i32
|
|
"\41\00" ;; i32.const 0
|
|
"\28" ;; i32.load
|
|
"\02" ;; alignment 2
|
|
"\82\80\80\80\80\00" ;; offset 2 with one byte too many
|
|
"\1a" ;; drop
|
|
"\0b" ;; end
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01\60\00\00" ;; Type section
|
|
"\03\02\01\00" ;; Function section
|
|
"\05\03\01\00\01" ;; Memory section
|
|
"\0a\11\01" ;; Code section
|
|
;; function 0
|
|
"\0f\01\01" ;; local type count
|
|
"\7f" ;; i32
|
|
"\41\00" ;; i32.const 0
|
|
"\28" ;; i32.load
|
|
"\82\80\80\80\80\00" ;; alignment 2 with one byte too many
|
|
"\00" ;; offset 0
|
|
"\1a" ;; drop
|
|
"\0b" ;; end
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01\60\00\00" ;; Type section
|
|
"\03\02\01\00" ;; Function section
|
|
"\05\03\01\00\01" ;; Memory section
|
|
"\0a\12\01" ;; Code section
|
|
;; function 0
|
|
"\10\01\01" ;; local type count
|
|
"\7f" ;; i32
|
|
"\41\00" ;; i32.const 0
|
|
"\41\03" ;; i32.const 3
|
|
"\36" ;; i32.store
|
|
"\82\80\80\80\80\00" ;; alignment 2 with one byte too many
|
|
"\03" ;; offset 3
|
|
"\0b" ;; end
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01\60\00\00" ;; Type section
|
|
"\03\02\01\00" ;; Function section
|
|
"\05\03\01\00\01" ;; Memory section
|
|
"\0a\12\01" ;; Code section
|
|
;; function 0
|
|
"\10\01\01" ;; local type count
|
|
"\7f" ;; i32
|
|
"\41\00" ;; i32.const 0
|
|
"\41\03" ;; i32.const 3
|
|
"\36" ;; i32.store
|
|
"\02" ;; alignment 2
|
|
"\82\80\80\80\80\00" ;; offset 2 with one byte too many
|
|
"\0b" ;; end
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
|
|
;; Signed LEB128 must not be overlong
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\0b\01" ;; Global section with 1 entry
|
|
"\7f\00" ;; i32, immutable
|
|
"\41\80\80\80\80\80\00" ;; i32.const 0 with one byte too many
|
|
"\0b" ;; end
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\0b\01" ;; Global section with 1 entry
|
|
"\7f\00" ;; i32, immutable
|
|
"\41\ff\ff\ff\ff\ff\7f" ;; i32.const -1 with one byte too many
|
|
"\0b" ;; end
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\10\01" ;; Global section with 1 entry
|
|
"\7e\00" ;; i64, immutable
|
|
"\42\80\80\80\80\80\80\80\80\80\80\00" ;; i64.const 0 with one byte too many
|
|
"\0b" ;; end
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\10\01" ;; Global section with 1 entry
|
|
"\7e\00" ;; i64, immutable
|
|
"\42\ff\ff\ff\ff\ff\ff\ff\ff\ff\ff\7f" ;; i64.const -1 with one byte too many
|
|
"\0b" ;; end
|
|
)
|
|
"integer representation too long"
|
|
)
|
|
|
|
;; Unsigned LEB128s zero-extend
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\05\07\01" ;; Memory section with 1 entry
|
|
"\00\82\80\80\80\70" ;; no max, minimum 2 with unused bits set
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\05\07\01" ;; Memory section with 1 entry
|
|
"\00\82\80\80\80\40" ;; no max, minimum 2 with some unused bits set
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\05\09\01" ;; Memory section with 1 entry
|
|
"\01\82\00" ;; minimum 2
|
|
"\82\80\80\80\10" ;; max 2 with unused bits set
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\05\09\01" ;; Memory section with 1 entry
|
|
"\01\82\00" ;; minimum 2
|
|
"\82\80\80\80\40" ;; max 2 with some unused bits set
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\05\03\01" ;; Memory section with 1 entry
|
|
"\00\00" ;; no max, minimum 0
|
|
"\0b\0a\01" ;; Data section with 1 entry
|
|
"\80\80\80\80\10" ;; Memory index 0 with unused bits set
|
|
"\41\00\0b\00" ;; (i32.const 0) with contents ""
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\04\04\01" ;; Table section with 1 entry
|
|
"\70\00\00" ;; no max, minimum 0, funcref
|
|
"\09\0a\01" ;; Element section with 1 entry
|
|
"\80\80\80\80\10" ;; Table index 0 with unused bits set
|
|
"\41\00\0b\00" ;; (i32.const 0) with no elements
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\00" ;; custom section
|
|
"\83\80\80\80\10" ;; section size 3 with unused bits set
|
|
"\01" ;; name byte count
|
|
"1" ;; name
|
|
"2" ;; sequence of bytes
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\00" ;; custom section
|
|
"\09" ;; section size
|
|
"\83\80\80\80\40" ;; name byte count 3 with unused bits set
|
|
"123" ;; name
|
|
"4" ;; sequence of bytes
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\0b\01" ;; type section
|
|
"\60" ;; func type
|
|
"\82\80\80\80\10" ;; num params 2 with unused bits set
|
|
"\7f\7e" ;; param type
|
|
"\01" ;; num result
|
|
"\7f" ;; result type
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\0b\01" ;; type section
|
|
"\60" ;; func type
|
|
"\02" ;; num params
|
|
"\7f\7e" ;; param type
|
|
"\81\80\80\80\40" ;; num result 1 with unused bits set
|
|
"\7f" ;; result type
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\05\01" ;; type section
|
|
"\60\01\7f\00" ;; function type
|
|
"\02\1a\01" ;; import section
|
|
"\88\80\80\80\10" ;; module name length 8 with unused bits set
|
|
"\73\70\65\63\74\65\73\74" ;; module name
|
|
"\09" ;; entity name length
|
|
"\70\72\69\6e\74\5f\69\33\32" ;; entity name
|
|
"\00" ;; import kind
|
|
"\00" ;; import signature index
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\05\01" ;; type section
|
|
"\60\01\7f\00" ;; function type
|
|
"\02\1a\01" ;; import section
|
|
"\08" ;; module name length
|
|
"\73\70\65\63\74\65\73\74" ;; module name
|
|
"\89\80\80\80\40" ;; entity name length 9 with unused bits set
|
|
"\70\72\69\6e\74\5f\69\33\32" ;; entity name
|
|
"\00" ;; import kind
|
|
"\00" ;; import signature index
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\05\01" ;; type section
|
|
"\60\01\7f\00" ;; function type
|
|
"\02\1a\01" ;; import section
|
|
"\08" ;; module name length
|
|
"\73\70\65\63\74\65\73\74" ;; module name
|
|
"\09" ;; entity name length 9
|
|
"\70\72\69\6e\74\5f\69\33\32" ;; entity name
|
|
"\00" ;; import kind
|
|
"\80\80\80\80\10" ;; import signature index 0 with unused bits set
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01" ;; type section
|
|
"\60\00\00" ;; function type
|
|
"\03\06\01" ;; function section
|
|
"\80\80\80\80\10" ;; function 0 signature index with unused bits set
|
|
"\0a\04\01" ;; code section
|
|
"\02\00\0b" ;; function body
|
|
)
|
|
"integer too large"
|
|
)
|
|
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01" ;; type section
|
|
"\60\00\00" ;; fun type
|
|
"\03\02\01\00" ;; function section
|
|
"\07\0a\01" ;; export section
|
|
"\82\80\80\80\10" ;; string length 2 with unused bits set
|
|
"\66\31" ;; export name f1
|
|
"\00" ;; export kind
|
|
"\00" ;; export func index
|
|
"\0a\04\01" ;; code section
|
|
"\02\00\0b" ;; function body
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01" ;; type section
|
|
"\60\00\00" ;; fun type
|
|
"\03\02\01\00" ;; function section
|
|
"\07\0a\01" ;; export section
|
|
"\02" ;; string length 2
|
|
"\66\31" ;; export name f1
|
|
"\00" ;; export kind
|
|
"\80\80\80\80\10" ;; export func index with unused bits set
|
|
"\0a\04\01" ;; code section
|
|
"\02\00\0b" ;; function body
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01" ;; type section
|
|
"\60\00\00" ;; fun type
|
|
"\03\02\01\00" ;; function section
|
|
"\0a" ;; code section
|
|
"\08" ;; section size
|
|
"\81\80\80\80\10" ;; num functions 1 with unused bits set
|
|
"\02\00\0b" ;; function body
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01\60\00\00" ;; Type section
|
|
"\03\02\01\00" ;; Function section
|
|
"\05\03\01\00\01" ;; Memory section
|
|
"\0a\10\01" ;; Code section
|
|
;; function 0
|
|
"\0e\01\01" ;; local type count
|
|
"\7f" ;; i32
|
|
"\41\00" ;; i32.const 0
|
|
"\28" ;; i32.load
|
|
"\02" ;; alignment 2
|
|
"\82\80\80\80\10" ;; offset 2 with unused bits set
|
|
"\1a" ;; drop
|
|
"\0b" ;; end
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01\60\00\00" ;; Type section
|
|
"\03\02\01\00" ;; Function section
|
|
"\05\03\01\00\01" ;; Memory section
|
|
"\0a\10\01" ;; Code section
|
|
;; function 0
|
|
"\0e\01\01" ;; local type count
|
|
"\7f" ;; i32
|
|
"\41\00" ;; i32.const 0
|
|
"\28" ;; i32.load
|
|
"\02" ;; alignment 2
|
|
"\82\80\80\80\40" ;; offset 2 with some unused bits set
|
|
"\1a" ;; drop
|
|
"\0b" ;; end
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01\60\00\00" ;; Type section
|
|
"\03\02\01\00" ;; Function section
|
|
"\05\03\01\00\01" ;; Memory section
|
|
"\0a\10\01" ;; Code section
|
|
"\0e\01\01" ;; local type count
|
|
"\7f" ;; i32
|
|
"\41\00" ;; i32.const 0
|
|
"\28" ;; i32.load
|
|
"\82\80\80\80\10" ;; alignment 2 with unused bits set
|
|
"\00" ;; offset 0
|
|
"\1a" ;; drop
|
|
"\0b" ;; end
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01\60\00\00" ;; Type section
|
|
"\03\02\01\00" ;; Function section
|
|
"\05\03\01\00\01" ;; Memory section
|
|
"\0a\10\01" ;; Code section
|
|
;; function 0
|
|
"\0e\01\01" ;; local type count
|
|
"\7f" ;; i32
|
|
"\41\00" ;; i32.const 0
|
|
"\28" ;; i32.load
|
|
"\82\80\80\80\40" ;; alignment 2 with some unused bits set
|
|
"\00" ;; offset 0
|
|
"\1a" ;; drop
|
|
"\0b" ;; end
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01\60\00\00" ;; Type section
|
|
"\03\02\01\00" ;; Function section
|
|
"\05\03\01\00\01" ;; Memory section
|
|
"\0a\11\01" ;; Code section
|
|
;; function 0
|
|
"\0f\01\01" ;; local type count
|
|
"\7f" ;; i32
|
|
"\41\00" ;; i32.const 0
|
|
"\41\03" ;; i32.const 3
|
|
"\36" ;; i32.store
|
|
"\82\80\80\80\10" ;; alignment 2 with unused bits set
|
|
"\03" ;; offset 3
|
|
"\0b" ;; end
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01\60\00\00" ;; Type section
|
|
"\03\02\01\00" ;; Function section
|
|
"\05\03\01\00\01" ;; Memory section
|
|
"\0a\11\01" ;; Code section
|
|
;; function 0
|
|
"\0f\01\01" ;; local type count
|
|
"\7f" ;; i32
|
|
"\41\00" ;; i32.const 0
|
|
"\41\03" ;; i32.const 3
|
|
"\36" ;; i32.store
|
|
"\82\80\80\80\40" ;; alignment 2 with some unused bits set
|
|
"\03" ;; offset 3
|
|
"\0b" ;; end
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01\60\00\00" ;; Type section
|
|
"\03\02\01\00" ;; Function section
|
|
"\05\03\01\00\01" ;; Memory section
|
|
"\0a\11\01" ;; Code section
|
|
;; function 0
|
|
"\0f\01\01" ;; local type count
|
|
"\7f" ;; i32
|
|
"\41\00" ;; i32.const 0
|
|
"\41\03" ;; i32.const 3
|
|
"\36" ;; i32.store
|
|
"\03" ;; alignment 2
|
|
"\82\80\80\80\10" ;; offset 2 with unused bits set
|
|
"\0b" ;; end
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\01\04\01\60\00\00" ;; Type section
|
|
"\03\02\01\00" ;; Function section
|
|
"\05\03\01\00\01" ;; Memory section
|
|
"\0a\11\01" ;; Code section
|
|
|
|
;; function 0
|
|
"\0f\01\01" ;; local type count
|
|
"\7f" ;; i32
|
|
"\41\00" ;; i32.const 0
|
|
"\41\03" ;; i32.const 3
|
|
"\36" ;; i32.store
|
|
"\02" ;; alignment 2
|
|
"\82\80\80\80\40" ;; offset 2 with some unused bits set
|
|
"\0b" ;; end
|
|
)
|
|
"integer too large"
|
|
)
|
|
|
|
;; Signed LEB128s sign-extend
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\0a\01" ;; Global section with 1 entry
|
|
"\7f\00" ;; i32, immutable
|
|
"\41\80\80\80\80\70" ;; i32.const 0 with unused bits set
|
|
"\0b" ;; end
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\0a\01" ;; Global section with 1 entry
|
|
"\7f\00" ;; i32, immutable
|
|
"\41\ff\ff\ff\ff\0f" ;; i32.const -1 with unused bits unset
|
|
"\0b" ;; end
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\0a\01" ;; Global section with 1 entry
|
|
"\7f\00" ;; i32, immutable
|
|
"\41\80\80\80\80\1f" ;; i32.const 0 with some unused bits set
|
|
"\0b" ;; end
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\0a\01" ;; Global section with 1 entry
|
|
"\7f\00" ;; i32, immutable
|
|
"\41\ff\ff\ff\ff\4f" ;; i32.const -1 with some unused bits unset
|
|
"\0b" ;; end
|
|
)
|
|
"integer too large"
|
|
)
|
|
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\0f\01" ;; Global section with 1 entry
|
|
"\7e\00" ;; i64, immutable
|
|
"\42\80\80\80\80\80\80\80\80\80\7e" ;; i64.const 0 with unused bits set
|
|
"\0b" ;; end
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\0f\01" ;; Global section with 1 entry
|
|
"\7e\00" ;; i64, immutable
|
|
"\42\ff\ff\ff\ff\ff\ff\ff\ff\ff\01" ;; i64.const -1 with unused bits unset
|
|
"\0b" ;; end
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\0f\01" ;; Global section with 1 entry
|
|
"\7e\00" ;; i64, immutable
|
|
"\42\80\80\80\80\80\80\80\80\80\02" ;; i64.const 0 with some unused bits set
|
|
"\0b" ;; end
|
|
)
|
|
"integer too large"
|
|
)
|
|
(assert_malformed
|
|
(module binary
|
|
"\00asm" "\01\00\00\00"
|
|
"\06\0f\01" ;; Global section with 1 entry
|
|
"\7e\00" ;; i64, immutable
|
|
"\42\ff\ff\ff\ff\ff\ff\ff\ff\ff\41" ;; i64.const -1 with some unused bits unset
|
|
"\0b" ;; end
|
|
)
|
|
"integer too large"
|
|
)
|