Skip to content

Commit 9ac8ac1

Browse files
committed
Validate function bodies
1 parent 278c917 commit 9ac8ac1

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

packages/vm/src/static_analysis.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,19 @@ pub const REQUIRED_IBC_EXPORTS: &[&str] = &[
1717
macro_rules! extract_reader {
1818
($wasm_code: expr, $payload: ident, $t: ty) => {{
1919
fn extract(wasm_code: &[u8]) -> crate::VmResult<Option<$t>> {
20-
use wasmer::wasmparser::{Parser, Payload, Validator};
20+
use wasmer::wasmparser::{Parser, Payload, ValidPayload, Validator};
2121

2222
let mut validator = Validator::new();
2323
let parser = Parser::new(0);
2424

2525
let mut value = None;
2626
for p in parser.parse_all(wasm_code) {
2727
let p = p?;
28-
validator.payload(&p)?;
28+
// validate the payload
29+
if let ValidPayload::Func(mut fv, body) = validator.payload(&p)? {
30+
// also validate function bodies
31+
fv.validate(&body)?;
32+
}
2933
if let Payload::$payload(e) = p {
3034
// do not return immediately, as we want to validate the entire module
3135
value = Some(e);

0 commit comments

Comments
 (0)