mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-22 18:54:02 +01:00
[WebAssembly] Fix validation of start function
The check for valid start function was inverted. Added a new test in test/Object to check this case and fixed the existing tests in for ObjectYAML. Differential Revision: https://reviews.llvm.org/D32986 llvm-svn: 302560
This commit is contained in:
parent
688762900b
commit
c698370461
@ -507,7 +507,7 @@ Error WasmObjectFile::parseExportSection(const uint8_t *Ptr, const uint8_t *End)
|
||||
|
||||
Error WasmObjectFile::parseStartSection(const uint8_t *Ptr, const uint8_t *End) {
|
||||
StartFunction = readVaruint32(Ptr);
|
||||
if (StartFunction < FunctionTypes.size())
|
||||
if (StartFunction >= FunctionTypes.size())
|
||||
return make_error<GenericBinaryError>("Invalid start function",
|
||||
object_error::parse_failed);
|
||||
return Error::success();
|
||||
|
10
test/Object/wasm-invalid-start.test
Normal file
10
test/Object/wasm-invalid-start.test
Normal file
@ -0,0 +1,10 @@
|
||||
# RUN: yaml2obj %s | not llvm-objdump -h - 2>&1 | FileCheck %s
|
||||
|
||||
!WASM
|
||||
FileHeader:
|
||||
Version: 0x00000001
|
||||
Sections:
|
||||
- Type: START
|
||||
StartFunction: 0
|
||||
|
||||
# CHECK: {{.*}}: Invalid start function
|
@ -4,9 +4,7 @@ FileHeader:
|
||||
Version: 0x00000001
|
||||
Sections:
|
||||
- Type: FUNCTION
|
||||
FunctionTypes:
|
||||
- 1
|
||||
- 0
|
||||
FunctionTypes: [ 1, 0 ]
|
||||
...
|
||||
# CHECK: --- !WASM
|
||||
# CHECK: FileHeader:
|
||||
|
@ -1,8 +1,17 @@
|
||||
# RUN: yaml2obj %s | obj2yaml | FileCheck %s
|
||||
|
||||
--- !WASM
|
||||
FileHeader:
|
||||
Version: 0x00000001
|
||||
Sections:
|
||||
- Type: TYPE
|
||||
Signatures:
|
||||
- ReturnType: I32
|
||||
ParamTypes:
|
||||
- F32
|
||||
- F32
|
||||
- Type: FUNCTION
|
||||
FunctionTypes: [ 0, 0, 0 ]
|
||||
- Type: START
|
||||
StartFunction: 1
|
||||
...
|
||||
|
Loading…
Reference in New Issue
Block a user