Fix validate start section with imports (#485)

Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
This commit is contained in:
Takeshi Yoneda
2022-04-20 10:54:12 +09:00
committed by GitHub
parent 45ccab589b
commit 14d7bcfaed
2 changed files with 17 additions and 2 deletions

View File

@@ -191,9 +191,9 @@ func (m *Module) TypeOfFunction(funcIdx Index) *FunctionType {
return nil
}
funcImportCount := Index(0)
for i, im := range m.ImportSection {
for _, im := range m.ImportSection {
if im.Type == ExternTypeFunc {
if funcIdx == Index(i) {
if funcIdx == funcImportCount {
if im.DescFunc >= typeSectionLength {
return nil
}

View File

@@ -331,6 +331,21 @@ func TestModule_validateStartSection(t *testing.T) {
})
}
})
t.Run("imported valid func", func(t *testing.T) {
index := Index(1)
m := Module{
StartSection: &index,
TypeSection: []*FunctionType{{}, {Results: []ValueType{ValueTypeI32}}},
ImportSection: []*Import{
{Type: ExternTypeFunc, DescFunc: 1},
// import with index 1 is global but this should be skipped when searching imported functions.
{Type: ExternTypeGlobal},
{Type: ExternTypeFunc, DescFunc: 0}, // This one must be selected.
},
}
err := m.validateStartSection()
require.NoError(t, err)
})
}
func TestModule_validateGlobals(t *testing.T) {