From 937393ce0742ffde9e63704e363099340ec6183c Mon Sep 17 00:00:00 2001 From: Mike Welsh Date: Thu, 4 Feb 2021 19:11:46 -0800 Subject: [PATCH] core: Fix panic from negative array indices in SharedObject (fix #3094) --- core/src/avm1/globals/shared_object.rs | 4 ++-- core/src/player.rs | 8 ++++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/core/src/avm1/globals/shared_object.rs b/core/src/avm1/globals/shared_object.rs index 7a095d9a3..a830e2fb5 100644 --- a/core/src/avm1/globals/shared_object.rs +++ b/core/src/avm1/globals/shared_object.rs @@ -134,8 +134,8 @@ fn deserialize_array<'gc>( for entry in json_obj.iter() { let value = recursive_deserialize(entry.1.clone(), activation); - if let Ok(i) = entry.0.parse::() { - obj.set_array_element(i as usize, value, activation.context.gc_context); + if let Ok(i) = entry.0.parse::() { + obj.set_array_element(i, value, activation.context.gc_context); } else { obj.define_value( activation.context.gc_context, diff --git a/core/src/player.rs b/core/src/player.rs index 4281840b9..bfe93d803 100644 --- a/core/src/player.rs +++ b/core/src/player.rs @@ -1013,6 +1013,14 @@ impl Player { &mut self.renderer } + pub fn storage(&self) -> &Storage { + &self.storage + } + + pub fn storage_mut(&mut self) -> &mut Storage { + &mut self.storage + } + pub fn destroy(self) -> Renderer { self.renderer }