change Preferences_Save_Safe code to not have small oob read

This commit is contained in:
Garux 2021-03-24 04:26:54 +03:00
parent 60652a335f
commit 6aa8e432f7

View File

@ -176,15 +176,10 @@ bool Preferences_Save( PreferenceDictionary& preferences, const char* filename )
}
bool Preferences_Save_Safe( PreferenceDictionary& preferences, const char* filename ){
Array<char> tmpName( filename, filename + strlen( filename ) + 1 + 3 );
*( tmpName.end() - 4 ) = 'T';
*( tmpName.end() - 3 ) = 'M';
*( tmpName.end() - 2 ) = 'P';
*( tmpName.end() - 1 ) = '\0';
return Preferences_Save( preferences, tmpName.data() )
const auto tmpName = StringOutputStream()( filename, "TMP" );
return Preferences_Save( preferences, tmpName )
&& ( !file_exists( filename ) || file_remove( filename ) )
&& file_move( tmpName.data(), filename );
&& file_move( tmpName, filename );
}