diff options
author | Alon Zakai <alonzakai@gmail.com> | 2016-05-09 11:02:43 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2016-05-09 11:02:43 -0700 |
commit | bc307c19ddca4bef900db3ff9d512bd21a57be60 (patch) | |
tree | 66f6258e14e3fc938e1e71d666bacb19ec69d8cf /src | |
parent | 7cb38a21e3e1085a39048b20dbbbb5c06f9dc4c5 (diff) | |
download | binaryen-bc307c19ddca4bef900db3ff9d512bd21a57be60.tar.gz binaryen-bc307c19ddca4bef900db3ff9d512bd21a57be60.tar.bz2 binaryen-bc307c19ddca4bef900db3ff9d512bd21a57be60.zip |
allow error handling in binary parsing
Diffstat (limited to 'src')
-rw-r--r-- | src/binaryen-c.cpp | 4 | ||||
-rw-r--r-- | src/wasm-binary.h | 3 | ||||
-rw-r--r-- | src/wasm-dis.cpp | 4 | ||||
-rw-r--r-- | src/wasm-s-parser.h | 2 |
4 files changed, 9 insertions, 4 deletions
diff --git a/src/binaryen-c.cpp b/src/binaryen-c.cpp index 583f64094..ecb70bc1b 100644 --- a/src/binaryen-c.cpp +++ b/src/binaryen-c.cpp @@ -416,7 +416,9 @@ BinaryenModuleRef BinaryenModuleRead(char* input, size_t inputSize) { std::vector<char> buffer(false); buffer.resize(inputSize); std::copy_n(input, inputSize, buffer.begin()); - WasmBinaryBuilder parser(*wasm, buffer, false); + WasmBinaryBuilder parser(*wasm, buffer, []() { + Fatal() << "error in parsing wasm binary"; + }, false); parser.read(); return wasm; } diff --git a/src/wasm-binary.h b/src/wasm-binary.h index c889f1418..4670c9de3 100644 --- a/src/wasm-binary.h +++ b/src/wasm-binary.h @@ -1164,13 +1164,14 @@ class WasmBinaryBuilder { Module& wasm; MixedArena& allocator; std::vector<char>& input; + std::function<void ()> onError; bool debug; size_t pos = 0; int32_t startIndex = -1; public: - WasmBinaryBuilder(Module& wasm, std::vector<char>& input, bool debug) : wasm(wasm), allocator(wasm.allocator), input(input), debug(debug) {} + WasmBinaryBuilder(Module& wasm, std::vector<char>& input, std::function<void ()> onError, bool debug) : wasm(wasm), allocator(wasm.allocator), input(input), onError(onError), debug(debug) {} void read() { diff --git a/src/wasm-dis.cpp b/src/wasm-dis.cpp index e2e103b46..94965518c 100644 --- a/src/wasm-dis.cpp +++ b/src/wasm-dis.cpp @@ -45,7 +45,9 @@ int main(int argc, const char *argv[]) { if (options.debug) std::cerr << "parsing binary..." << std::endl; Module wasm; - WasmBinaryBuilder parser(wasm, input, options.debug); + WasmBinaryBuilder parser(wasm, input, []() { + Fatal() << "error in parsing wasm binary"; + }, options.debug); parser.read(); if (options.debug) std::cerr << "Printing..." << std::endl; diff --git a/src/wasm-s-parser.h b/src/wasm-s-parser.h index 73421e773..4b27918d3 100644 --- a/src/wasm-s-parser.h +++ b/src/wasm-s-parser.h @@ -259,7 +259,7 @@ public: stringToBinary(str, size, data); } } - WasmBinaryBuilder binaryBuilder(wasm, data, false); + WasmBinaryBuilder binaryBuilder(wasm, data, onError, false); binaryBuilder.read(); return; } |