mirror of
https://github.com/RGBCube/serenity
synced 2025-07-15 23:27:37 +00:00

It's possible for the module to request too many locals, we now reject such modules instead of trying to allocate space for them. The value itself is chosen arbitrarily, so future tweaks _might_ be necessary. Found by OSS-Fuzz: https://oss-fuzz.com/testcase?key=4755809098661888
45 lines
1.3 KiB
C++
45 lines
1.3 KiB
C++
/*
|
|
* Copyright (c) 2021, Ali Mohammad Pur <mpfard@serenityos.org>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <AK/Types.h>
|
|
|
|
namespace Wasm::Constants {
|
|
|
|
// Value
|
|
static constexpr auto i32_tag = 0x7f;
|
|
static constexpr auto i64_tag = 0x7e;
|
|
static constexpr auto f32_tag = 0x7d;
|
|
static constexpr auto f64_tag = 0x7c;
|
|
static constexpr auto function_reference_tag = 0x70;
|
|
static constexpr auto extern_reference_tag = 0x6f;
|
|
|
|
// Function
|
|
static constexpr auto function_signature_tag = 0x60;
|
|
|
|
// Global
|
|
static constexpr auto const_tag = 0x00;
|
|
static constexpr auto var_tag = 0x01;
|
|
|
|
// Block
|
|
static constexpr auto empty_block_tag = 0x40;
|
|
|
|
// Import section
|
|
static constexpr auto extern_function_tag = 0x00;
|
|
static constexpr auto extern_table_tag = 0x01;
|
|
static constexpr auto extern_memory_tag = 0x02;
|
|
static constexpr auto extern_global_tag = 0x03;
|
|
|
|
static constexpr auto page_size = 64 * KiB;
|
|
|
|
// Implementation-defined limits
|
|
// These are not concretely defined by the spec, so the values are only defined by us.
|
|
static constexpr auto minimum_stack_space_to_keep_free = 256 * KiB; // Note: Value is arbitrary and chosen by testing with ASAN
|
|
static constexpr auto max_allowed_executed_instructions_per_call = 256 * 1024 * 1024;
|
|
static constexpr auto max_allowed_function_locals_per_type = 420; // Note: VERY arbitrary.
|
|
|
|
}
|