mirror of
https://github.com/fluencelabs/wasmer
synced 2025-04-25 10:22:19 +00:00
Merge #809
809: Fix issue 800 - check index before accessing imports.globals r=syrusakbary a=pventuzelo # Description Fix issue #800 * Check if `import_global_index` is valid i.e inside imports.globals range. * Related functions: * validate_memories * validate_tables * finalize_memories * finalize_tables # After the fix ``` sh $ ./target/release/wasmer run index_oob_LocalBacking_validate_memories_152.wasm execute_wasm: "Can\'t instantiate module: LinkError([Generic { message: \"incorrect global index for initializer\" }])" -------------------------------------------------------------------------------------------------------- $ ./target/release/wasmer run index_oob_LocalBacking_validate_tables_276.wasm execute_wasm: "Can\'t instantiate module: LinkError([Generic { message: \"incorrect global index for initializer\" }])" ``` # Review - [x] Create a short description of the the change in the CHANGELOG.md file Co-authored-by: Patrick Ventuzelo <ventuzelo.patrick@gmail.com> Co-authored-by: Patrick Ventuzelo <9038181+pventuzelo@users.noreply.github.com>
This commit is contained in:
commit
231b1c20bf
@ -6,6 +6,7 @@ Blocks of changes will separated by version increments.
|
||||
|
||||
## **[Unreleased]**
|
||||
|
||||
- [#809](https://github.com/wasmerio/wasmer/pull/809) Fix bugs leading to panics in `LocalBacking`.
|
||||
- [#822](https://github.com/wasmerio/wasmer/pull/822) Update Cranelift fork version to `0.43.1`
|
||||
- [#829](https://github.com/wasmerio/wasmer/pull/829) Fix deps on `make bench-*` commands; benchmarks don't compile other backends now
|
||||
- [#807](https://github.com/wasmerio/wasmer/pull/807) Implement Send for `Instance`, breaking change on `ImportObject`, remove method `get_namespace` replaced with `with_namespace` and `maybe_with_namespace`
|
||||
|
@ -152,6 +152,11 @@ impl LocalBacking {
|
||||
}]);
|
||||
}
|
||||
Initializer::GetGlobal(import_global_index) => {
|
||||
if import_global_index.index() >= imports.globals.len() {
|
||||
return Err(vec![LinkError::Generic {
|
||||
message: "incorrect global index for initializer".to_string(),
|
||||
}]);
|
||||
}
|
||||
if let Value::I32(x) = imports.globals[import_global_index].get() {
|
||||
x as u32
|
||||
} else {
|
||||
@ -208,6 +213,11 @@ impl LocalBacking {
|
||||
}]);
|
||||
}
|
||||
Initializer::GetGlobal(import_global_index) => {
|
||||
if import_global_index.index() >= imports.globals.len() {
|
||||
return Err(vec![LinkError::Generic {
|
||||
message: "incorrect global index for initializer".to_string(),
|
||||
}]);
|
||||
}
|
||||
if let Value::I32(x) = imports.globals[import_global_index].get() {
|
||||
x as u32
|
||||
} else {
|
||||
@ -276,6 +286,11 @@ impl LocalBacking {
|
||||
}]);
|
||||
}
|
||||
Initializer::GetGlobal(import_global_index) => {
|
||||
if import_global_index.index() >= imports.globals.len() {
|
||||
return Err(vec![LinkError::Generic {
|
||||
message: "incorrect global index for initializer".to_string(),
|
||||
}]);
|
||||
}
|
||||
if let Value::I32(x) = imports.globals[import_global_index].get() {
|
||||
x as u32
|
||||
} else {
|
||||
@ -329,6 +344,11 @@ impl LocalBacking {
|
||||
}]);
|
||||
}
|
||||
Initializer::GetGlobal(import_global_index) => {
|
||||
if import_global_index.index() >= imports.globals.len() {
|
||||
return Err(vec![LinkError::Generic {
|
||||
message: "incorrect global index for initializer".to_string(),
|
||||
}]);
|
||||
}
|
||||
if let Value::I32(x) = imports.globals[import_global_index].get() {
|
||||
x as u32
|
||||
} else {
|
||||
|
Loading…
x
Reference in New Issue
Block a user