From d220107dab7cad039ba68cf8d937fa1e2de0959e Mon Sep 17 00:00:00 2001 From: NikVolf Date: Mon, 5 Feb 2018 00:40:28 +0300 Subject: [PATCH] add validation via wabt-rs and fix --- Cargo.toml | 1 + src/gas.rs | 12 +++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 9ed330c..dbb2323 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -14,6 +14,7 @@ byteorder = "1" [dev-dependencies] tempdir = "0.3" +wabt = "0.1" [lib] diff --git a/src/gas.rs b/src/gas.rs index 031e3b9..5f3e9bc 100644 --- a/src/gas.rs +++ b/src/gas.rs @@ -53,6 +53,7 @@ fn add_grow_counter(module: elements::Module, rules: &rules::Set, gas_func: u32) GetLocal(1), GrowMemory(0), GetLocal(0), + End, ])) .build() .build() @@ -196,7 +197,9 @@ pub fn inject_gas_counter(module: elements::Module, rules: &rules::Set) -> eleme #[cfg(test)] mod tests { - use parity_wasm::{builder, elements}; + extern crate wabt; + + use parity_wasm::{serialize, builder, elements}; use super::*; use rules; @@ -246,11 +249,15 @@ mod tests { GetLocal(1), GrowMemory(0), GetLocal(0), + End, ][..], injected_module .code_section().expect("function section should exist").bodies()[1] .code().elements() ); + + let binary = serialize(injected_module).expect("serialization failed"); + self::wabt::wasm2wat(&binary).unwrap(); } #[test] @@ -291,6 +298,9 @@ mod tests { ); assert_eq!(injected_module.functions_space(), 2); + + let binary = serialize(injected_module).expect("serialization failed"); + self::wabt::wasm2wat(&binary).unwrap(); } #[test]