mirror of
https://github.com/SerenityOS/serenity
synced 2024-10-02 22:24:26 +00:00
LibWasm: Validate that function and code sections match
(cherry picked from commit cda0d6d27746672058b26b0e61d0900dc73b1fb3)
This commit is contained in:
parent
985c4c590d
commit
15effbaf2a
|
@ -1483,12 +1483,17 @@ bool Module::populate_sections()
|
|||
{
|
||||
auto is_ok = true;
|
||||
FunctionSection const* function_section { nullptr };
|
||||
bool seen_code_section = false;
|
||||
for_each_section_of_type<FunctionSection>([&](FunctionSection const& section) { function_section = §ion; });
|
||||
for_each_section_of_type<CodeSection>([&](CodeSection const& section) {
|
||||
if (!function_section) {
|
||||
if (!function_section && section.functions().is_empty()) {
|
||||
return;
|
||||
}
|
||||
if (!function_section || function_section->types().size() != section.functions().size()) {
|
||||
is_ok = false;
|
||||
return;
|
||||
}
|
||||
seen_code_section = true;
|
||||
size_t index = 0;
|
||||
for (auto& entry : section.functions()) {
|
||||
if (function_section->types().size() <= index) {
|
||||
|
@ -1505,6 +1510,8 @@ bool Module::populate_sections()
|
|||
++index;
|
||||
}
|
||||
});
|
||||
if (!seen_code_section && function_section && !function_section->types().is_empty())
|
||||
return false;
|
||||
return is_ok;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue