From c91002d5ec86fc034c4781fe43f19fe44241990b Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Mon, 13 Jun 2022 21:10:28 -0500 Subject: [PATCH] fix out of bounds reference in arrayobject --- Engine/source/console/arrayObject.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Engine/source/console/arrayObject.cpp b/Engine/source/console/arrayObject.cpp index 4c18ac306..009803cfb 100644 --- a/Engine/source/console/arrayObject.cpp +++ b/Engine/source/console/arrayObject.cpp @@ -155,8 +155,9 @@ bool ArrayObject::_addKeyFromField( void *object, const char *index, const char S32 ArrayObject::getIndexFromValue( const String &value ) const { + S32 currentIndex = mMin(mCurrentIndex, 0); S32 foundIndex = -1; - for ( S32 i = mCurrentIndex; i < mArray.size(); i++ ) + for ( S32 i = currentIndex; i < mArray.size(); i++ ) { if ( isEqual( mArray[i].value, value ) ) { @@ -167,7 +168,7 @@ S32 ArrayObject::getIndexFromValue( const String &value ) const if( foundIndex < 0 ) { - for ( S32 i = 0; i < mCurrentIndex; i++ ) + for ( S32 i = 0; i < currentIndex; i++ ) { if ( isEqual( mArray[i].value, value ) ) { @@ -184,8 +185,9 @@ S32 ArrayObject::getIndexFromValue( const String &value ) const S32 ArrayObject::getIndexFromKey( const String &key ) const { + S32 currentIndex = mMin(mCurrentIndex, 0); S32 foundIndex = -1; - for ( S32 i = mCurrentIndex; i < mArray.size(); i++ ) + for ( S32 i = currentIndex; i < mArray.size(); i++ ) { if ( isEqual( mArray[i].key, key ) ) { @@ -196,7 +198,7 @@ S32 ArrayObject::getIndexFromKey( const String &key ) const if( foundIndex < 0 ) { - for ( S32 i = 0; i < mCurrentIndex; i++ ) + for ( S32 i = 0; i < currentIndex; i++ ) { if ( isEqual( mArray[i].key, key ) ) { @@ -213,8 +215,9 @@ S32 ArrayObject::getIndexFromKey( const String &key ) const S32 ArrayObject::getIndexFromKeyValue( const String &key, const String &value ) const { + S32 currentIndex = mMin(mCurrentIndex, 0); S32 foundIndex = -1; - for ( S32 i = mCurrentIndex; i < mArray.size(); i++ ) + for ( S32 i = currentIndex; i < mArray.size(); i++ ) { if ( isEqual( mArray[i].key, key ) && isEqual( mArray[i].value, value ) ) { @@ -225,7 +228,7 @@ S32 ArrayObject::getIndexFromKeyValue( const String &key, const String &value ) if ( foundIndex < 0 ) { - for ( S32 i = 0; i < mCurrentIndex; i++ ) + for ( S32 i = 0; i < currentIndex; i++ ) { if ( isEqual( mArray[i].key, key ) && isEqual( mArray[i].value, value ) ) {