Struct wasmparser::Validator[][src]

pub struct Validator { /* fields omitted */ }
Expand description

Validator for a WebAssembly binary module.

This structure encapsulates state necessary to validate a WebAssembly binary. This implements validation as defined by the core specification. A Validator is designed, like Parser, to accept incremental input over time. Additionally a Validator is also designed for parallel validation of functions as they are received.

It’s expected that you’ll be using a Parser in tandem with a Validator. As each Payload is received from a Parser you’ll pass it into a Validator to test the validity of the payload. Note that all payloads received from a Parser are expected to be passed to a Validator. For example if you receive Payload::TypeSection you’ll call Validator::type_section to validate this.

The design of Validator is intended that you’ll interleave, in your own application’s processing, calls to validation. Each variant, after it’s received, will be validated and then your application would proceed as usual. At all times, however, you’ll have access to the Validator and the validation context up to that point. This enables applications to check the types of functions and learn how many globals there are, for example.

Implementations

Creates a new Validator ready to validate a WebAssembly module.

The new validator will receive payloads parsed from Parser, and expects the first payload received to be the version header from the parser.

Configures the enabled WebAssembly features for this Validator.

Validates an entire in-memory module with this validator.

This function will internally create a Parser to parse the bytes provided. The entire wasm module specified by bytes will be parsed and validated. Parse and validation errors will be returned through Err(_), and otherwise a successful validation means Ok(()) is returned.

Convenience function to validate a single Payload.

This function is intended to be used as a convenience. It will internally perform any validation necessary to validate the Payload provided. The convenience part is that you’re likely already going to be matching on Payload in your application, at which point it’s more appropriate to call the individual methods on Validator per-variant in Payload, such as Validator::type_section.

This function returns a ValidPayload variant on success, indicating one of a few possible actions that need to be taken after a payload is validated. For example function contents are not validated here, they’re returned through ValidPayload for validation by the caller.

Validates Payload::Version

pub fn module_section_entry(&mut self)

Validates Payload::ModuleSectionEntry.

Note that this does not actually perform any validation itself. The ModuleSectionEntry payload is associated with a sub-parser for the sub-module, and it’s expected that the events from the Parser are fed into this validator.

pub fn code_section_entry(
    &mut self
) -> Result<FuncValidator<ValidatorResources>>

Validates Payload::CodeSectionEntry.

This function will prepare a FuncValidator which can be used to validate the function. The function body provided will be parsed only enough to create the function validation context. After this the OperatorsReader returned can be used to read the opcodes of the function as well as feed information into the validator.

Note that the returned FuncValidator is “connected” to this Validator in that it uses the internal context of this validator for validating the function. The FuncValidator can be sent to another thread, for example, to offload actual processing of functions elsewhere.

Validates Payload::UnknownSection.

Currently always returns an error.

Validates Payload::End.

Trait Implementations

Returns the “default value” for a type. Read more

The function type used for validation.

Returns the table at given index if any.

Returns the linear memory at given index.

Returns the tag at given index.

Returns the global variable at given index.

Returns the FuncType associated with the given type index.

Returns the FuncType associated with the given function index.

Returns the element type at the given index.

Returns the number of elements.

Returns the number of bytes in the Wasm data section.

Returns whether the function index is referenced in the module anywhere outside of the start/function sections. Read more

Auto Trait Implementations

Blanket Implementations

Gets the TypeId of self. Read more

Immutably borrows from an owned value. Read more

Mutably borrows from an owned value. Read more

Performs the conversion.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.

The type returned in the event of a conversion error.

Performs the conversion.