summaryrefslogtreecommitdiff
path: root/src/wasm/wasm-binary.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/wasm/wasm-binary.cpp')
-rw-r--r--src/wasm/wasm-binary.cpp8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/wasm/wasm-binary.cpp b/src/wasm/wasm-binary.cpp
index cd1ca7dfd..dc97dbbc3 100644
--- a/src/wasm/wasm-binary.cpp
+++ b/src/wasm/wasm-binary.cpp
@@ -2201,11 +2201,13 @@ Type WasmBinaryReader::getConcreteType() {
return type;
}
-Name WasmBinaryReader::getInlineString() {
+Name WasmBinaryReader::getInlineString(bool requireValid) {
BYN_TRACE("<==\n");
auto len = getU32LEB();
auto data = getByteView(len);
-
+ if (requireValid && !String::isUTF8(data)) {
+ throwError("invalid UTF-8 string");
+ }
BYN_TRACE("getInlineString: " << data << " ==>\n");
return Name(data);
}
@@ -3027,7 +3029,7 @@ void WasmBinaryReader::readStrings() {
}
size_t num = getU32LEB();
for (size_t i = 0; i < num; i++) {
- auto string = getInlineString();
+ auto string = getInlineString(false);
// Re-encode from WTF-8 to WTF-16.
std::stringstream wtf16;
if (!String::convertWTF8ToWTF16(wtf16, string.str)) {