Sanitize load_amxscript() and add load_amxscript_ex/MF_LoadAmxScriptEx() requiring error max length (#530)
* Add a saner version of load_amxscript and use SafeStrcpy/Sprintf * Reflect the change in core * Add LoadAmxScriptEx API function * Reflect the change in CSX * Reflect the change in DodX * Reflect the change in TFCX * Reflect the change in TSX * Add few comments
This commit is contained in:
		@@ -128,9 +128,9 @@ void RankSystem::clear(){
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
bool RankSystem::loadCalc(const char* filename, char* error)
 | 
			
		||||
bool RankSystem::loadCalc(const char* filename, char* error, size_t maxLength)
 | 
			
		||||
{
 | 
			
		||||
	if ((MF_LoadAmxScript(&calc.amx,&calc.code,filename,error,0)!=AMX_ERR_NONE)||
 | 
			
		||||
	if ((MF_LoadAmxScriptEx(&calc.amx,&calc.code,filename, error, maxLength, 0)!=AMX_ERR_NONE)||
 | 
			
		||||
		(MF_AmxAllot(&calc.amx, 8 , &calc.amxAddr1, &calc.physAddr1)!=AMX_ERR_NONE)||
 | 
			
		||||
		(MF_AmxAllot(&calc.amx, 8 , &calc.amxAddr2, &calc.physAddr2)!=AMX_ERR_NONE)||
 | 
			
		||||
		(MF_AmxFindPublic(&calc.amx,"get_score",&calc.func)!=AMX_ERR_NONE)){
 | 
			
		||||
 
 | 
			
		||||
@@ -104,7 +104,7 @@ public:
 | 
			
		||||
	void saveRank( const char* filename );
 | 
			
		||||
	void loadRank( const char* filename );
 | 
			
		||||
	RankStats* findEntryInRank(const char* unique, const char* name , bool isip = false);
 | 
			
		||||
	bool loadCalc(const char* filename, char* error);
 | 
			
		||||
	bool loadCalc(const char* filename, char* error, size_t maxLength);
 | 
			
		||||
	inline int getRankNum( ) const { return rankNum; }
 | 
			
		||||
	void clear();
 | 
			
		||||
	void unloadCalc();
 | 
			
		||||
 
 | 
			
		||||
@@ -471,7 +471,7 @@ void OnAmxxAttach()
 | 
			
		||||
	if ( path && *path )
 | 
			
		||||
	{
 | 
			
		||||
		char error[128];
 | 
			
		||||
		g_rank.loadCalc( MF_BuildPathname("%s",path) , error  );
 | 
			
		||||
		g_rank.loadCalc( MF_BuildPathname("%s",path) , error, sizeof(error));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if ( !g_rank.begin() )
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user