mirror of
https://github.com/fluencelabs/wasmer
synced 2025-07-30 23:02:06 +00:00
update wasm-parser dep; use it for validation
This commit is contained in:
@@ -93,13 +93,18 @@ pub fn compile_with_config(
|
||||
/// WebAssembly specification. Returns `true` if validation
|
||||
/// succeeded, `false` if validation failed.
|
||||
pub fn validate(wasm: &[u8]) -> bool {
|
||||
validate_and_report_errors(wasm).is_ok()
|
||||
}
|
||||
|
||||
/// The same as `validate` but with an Error message on failure
|
||||
pub fn validate_and_report_errors(wasm: &[u8]) -> ::std::result::Result<(), String> {
|
||||
use wasmparser::WasmDecoder;
|
||||
let mut parser = wasmparser::ValidatingParser::new(wasm, None);
|
||||
loop {
|
||||
let state = parser.read();
|
||||
match *state {
|
||||
wasmparser::ParserState::EndWasm => break true,
|
||||
wasmparser::ParserState::Error(_) => break false,
|
||||
wasmparser::ParserState::EndWasm => break Ok(()),
|
||||
wasmparser::ParserState::Error(e) => break Err(format!("{}", e)),
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
@@ -73,7 +73,7 @@ impl ModuleInfo {
|
||||
let len = reader.bytes_remaining();
|
||||
let bytes = reader.read_bytes(len)?;
|
||||
let data = bytes.to_vec();
|
||||
let name = String::from_utf8_lossy(name).to_string();
|
||||
let name = name.to_string();
|
||||
self.custom_sections.insert(name, data);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user