From 77f645980e06f210b9cf0240b990952eb935bb42 Mon Sep 17 00:00:00 2001 From: samisalreadytaken <46823719+samisalreadytaken@users.noreply.github.com> Date: Sat, 29 Jun 2024 18:18:17 +0300 Subject: [PATCH] Fix string allocation in SquirrelVM::ReadObject --- sp/src/vscript/vscript_squirrel.cpp | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/sp/src/vscript/vscript_squirrel.cpp b/sp/src/vscript/vscript_squirrel.cpp index 799635ad..8870b048 100644 --- a/sp/src/vscript/vscript_squirrel.cpp +++ b/sp/src/vscript/vscript_squirrel.cpp @@ -3803,11 +3803,26 @@ void SquirrelVM::ReadObject( SQObjectPtr &pObj, CUtlBuffer* pBuffer, ReadStateMa case OT_STRING: { int len = pBuffer->GetInt(); - char *psz = (char*)stackalloc(len); + char *psz; + + if ( len < 1024 ) + { + psz = (char*)stackalloc( len ); + } + else + { + psz = (char*)malloc( len ); + } + pBuffer->Get( psz, len ); obj._unVal.pString = SQString::Create( _ss(vm_), psz, len ); + if ( len >= 1024 ) + { + free( psz ); + } + break; } case OT_TABLE: