Crate bytecode_verifier
source ·Expand description
Verifies bytecode sanity.
Re-exports
pub use check_duplication::DuplicationChecker;
pub use code_unit_verifier::CodeUnitVerifier;
pub use instruction_consistency::InstructionConsistency;
pub use signature::SignatureChecker;
pub use struct_defs::RecursiveStructDefChecker;
pub use verifier::verify_module;
pub use verifier::verify_script;
Modules
- This module implements a checker for verifying that all of the struct’s fields satisfy the abilities required by the struct’s abilities
- This module implements a checker for verifying that each vector in a CompiledModule contains distinct values. Successful verification implies that an index in vector can be used to uniquely name the entry at that index. Additionally, the checker also verifies the following:
- This module implements the checker for verifying correctness of function bodies. The overall verification is split between stack_usage_verifier.rs and abstract_interpreter.rs. CodeUnitVerifier simply orchestrates calls into these two files.
- This module implements a checker for verifying that
- This module implements a checker for verifies control flow. The following properties are ensured:
- This module contains verification of usage of dependencies for modules
- This module contains verification of usage of dependencies for modules and scripts.
- This module contains verification of usage of dependencies for modules
- This implements an algorithm that detects loops during the instantiation of generics.
- This module defines the transfer functions for verifying consistency of each bytecode instruction, in particular, for the bytecode instructions that come in both generic and non-generic flavors.
- This module implements a checker for verifying that a script (or script function when serving as the entry point for script execution) has a valid signature, which entails
- This module implements a checker for verifying signature tokens used in types of function parameters, locals, and fields of structs are well-formed. References can only occur at the top-level in all tokens. Additionally, references cannot occur at all in field types.
- This module provides a checker for verifying that struct definitions in a module are not recursive. Since the module dependency graph is acylic by construction, applying this checker to each module in isolation guarantees that there is no structural recursion globally.
- This module contains the public APIs supported by the bytecode verifier.