From b2747b076e845d5041783e5ded000d657ea8c4da Mon Sep 17 00:00:00 2001 From: Stephen Chung Date: Sun, 23 Feb 2020 14:09:40 +0800 Subject: [PATCH] Add bouncs check to array index access. --- src/engine.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/engine.rs b/src/engine.rs index 3e9a3278..6a1543af 100644 --- a/src/engine.rs +++ b/src/engine.rs @@ -513,8 +513,14 @@ impl Engine { if let Some(arr_typed) = (*val).downcast_mut() as Option<&mut Vec>> { - arr_typed[i as usize] = rhs_val; - return Ok(Box::new(())); + return if i < 0 { + Err(EvalAltResult::ErrorArrayOutOfBounds(0, i)) + } else if i as usize >= arr_typed.len() { + Err(EvalAltResult::ErrorArrayOutOfBounds(arr_typed.len(), i)) + } else { + arr_typed[i as usize] = rhs_val; + Ok(Box::new(())) + }; } else { return Err(EvalAltResult::ErrorIndexMismatch); }