Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(731)

Unified Diff: src/wasm/module-decoder.cc

Issue 2484643002: [wasm] Compare the maximum memory size with the spec limit, not with the V8 limit (Closed)
Patch Set: Add a negative test Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | src/wasm/wasm-module.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/wasm/module-decoder.cc
diff --git a/src/wasm/module-decoder.cc b/src/wasm/module-decoder.cc
index 9721f5af63941e0785afa93457b131bf5543144d..38402aef767e211ec4d7e2a8e46bfc8e969ad6be 100644
--- a/src/wasm/module-decoder.cc
+++ b/src/wasm/module-decoder.cc
@@ -316,7 +316,8 @@ class ModuleDecoder : public Decoder {
WasmIndirectFunctionTable* table = &module->function_tables.back();
consume_resizable_limits(
"element count", "elements", WasmModule::kV8MaxTableSize,
- &table->min_size, &table->has_max, &table->max_size);
+ &table->min_size, &table->has_max, WasmModule::kV8MaxTableSize,
+ &table->max_size);
break;
}
case kExternalMemory: {
@@ -324,6 +325,7 @@ class ModuleDecoder : public Decoder {
bool has_max = false;
consume_resizable_limits("memory", "pages", WasmModule::kV8MaxPages,
&module->min_mem_pages, &has_max,
+ WasmModule::kSpecMaxPages,
&module->max_mem_pages);
break;
}
@@ -385,7 +387,8 @@ class ModuleDecoder : public Decoder {
expect_u8("table type", kWasmAnyFunctionTypeForm);
consume_resizable_limits("table elements", "elements",
WasmModule::kV8MaxTableSize, &table->min_size,
- &table->has_max, &table->max_size);
+ &table->has_max, WasmModule::kV8MaxTableSize,
+ &table->max_size);
}
section_iter.advance();
}
@@ -401,9 +404,9 @@ class ModuleDecoder : public Decoder {
for (uint32_t i = 0; ok() && i < memory_count; i++) {
bool has_max = false;
- consume_resizable_limits("memory", "pages", WasmModule::kV8MaxPages,
- &module->min_mem_pages, &has_max,
- &module->max_mem_pages);
+ consume_resizable_limits(
+ "memory", "pages", WasmModule::kV8MaxPages, &module->min_mem_pages,
+ &has_max, WasmModule::kSpecMaxPages, &module->max_mem_pages);
}
section_iter.advance();
}
@@ -843,26 +846,27 @@ class ModuleDecoder : public Decoder {
}
void consume_resizable_limits(const char* name, const char* units,
- uint32_t max_value, uint32_t* initial,
- bool* has_max, uint32_t* maximum) {
+ uint32_t max_initial, uint32_t* initial,
+ bool* has_max, uint32_t max_maximum,
+ uint32_t* maximum) {
uint32_t flags = consume_u32v("resizable limits flags");
const byte* pos = pc();
*initial = consume_u32v("initial size");
*has_max = false;
- if (*initial > max_value) {
+ if (*initial > max_initial) {
error(pos, pos,
"initial %s size (%u %s) is larger than implementation limit (%u)",
- name, *initial, units, max_value);
+ name, *initial, units, max_initial);
}
if (flags & 1) {
*has_max = true;
pos = pc();
*maximum = consume_u32v("maximum size");
- if (*maximum > max_value) {
+ if (*maximum > max_maximum) {
error(
pos, pos,
"maximum %s size (%u %s) is larger than implementation limit (%u)",
- name, *maximum, units, max_value);
+ name, *maximum, units, max_maximum);
}
if (*maximum < *initial) {
error(pos, pos, "maximum %s size (%u %s) is less than initial (%u %s)",
@@ -870,7 +874,7 @@ class ModuleDecoder : public Decoder {
}
} else {
*has_max = false;
- *maximum = max_value;
+ *maximum = max_initial;
}
}
« no previous file with comments | « no previous file | src/wasm/wasm-module.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698