mirror of
https://github.com/DrBeef/ioq3quest.git
synced 2024-11-26 22:11:18 +00:00
Don't allow modifying qvms or pk3s
Exception for allowing pk3s to be downloaded.
This commit is contained in:
parent
8270d54a25
commit
936db459ee
4 changed files with 13 additions and 9 deletions
|
@ -304,7 +304,7 @@ void CL_cURL_PerformDownload(void)
|
|||
}
|
||||
FS_FCloseFile(clc.download);
|
||||
if(msg->msg == CURLMSG_DONE && msg->data.result == CURLE_OK) {
|
||||
FS_SV_Rename(clc.downloadTempName, clc.downloadName);
|
||||
FS_SV_Rename(clc.downloadTempName, clc.downloadName, qfalse);
|
||||
clc.downloadRestart = qtrue;
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -637,7 +637,7 @@ void CL_ParseDownload ( msg_t *msg ) {
|
|||
clc.download = 0;
|
||||
|
||||
// rename the file
|
||||
FS_SV_Rename ( clc.downloadTempName, clc.downloadName );
|
||||
FS_SV_Rename ( clc.downloadTempName, clc.downloadName, qfalse );
|
||||
}
|
||||
|
||||
// send intentions now
|
||||
|
|
|
@ -554,17 +554,19 @@ qboolean FS_CreatePath (char *OSPath) {
|
|||
=================
|
||||
FS_CheckFilenameIsNotExecutable
|
||||
|
||||
ERR_FATAL if trying to maniuplate a file with the platform library extension
|
||||
ERR_FATAL if trying to maniuplate a file with the platform library, QVM, or pk3 extension
|
||||
=================
|
||||
*/
|
||||
static void FS_CheckFilenameIsNotExecutable( const char *filename,
|
||||
const char *function )
|
||||
{
|
||||
// Check if the filename ends with the library extension
|
||||
if(COM_CompareExtension(filename, DLL_EXT))
|
||||
// Check if the filename ends with the library, QVM, or pk3 extension
|
||||
if( COM_CompareExtension( filename, DLL_EXT )
|
||||
|| COM_CompareExtension( filename, ".qvm" )
|
||||
|| COM_CompareExtension( filename, ".pk3" ) )
|
||||
{
|
||||
Com_Error( ERR_FATAL, "%s: Not allowed to manipulate '%s' due "
|
||||
"to %s extension", function, filename, DLL_EXT );
|
||||
"to %s extension", function, filename, COM_GetExtension( filename ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -765,7 +767,7 @@ FS_SV_Rename
|
|||
|
||||
===========
|
||||
*/
|
||||
void FS_SV_Rename( const char *from, const char *to ) {
|
||||
void FS_SV_Rename( const char *from, const char *to, qboolean safe ) {
|
||||
char *from_ospath, *to_ospath;
|
||||
|
||||
if ( !fs_searchpaths ) {
|
||||
|
@ -784,7 +786,9 @@ void FS_SV_Rename( const char *from, const char *to ) {
|
|||
Com_Printf( "FS_SV_Rename: %s --> %s\n", from_ospath, to_ospath );
|
||||
}
|
||||
|
||||
FS_CheckFilenameIsNotExecutable( to_ospath, __func__ );
|
||||
if ( safe ) {
|
||||
FS_CheckFilenameIsNotExecutable( to_ospath, __func__ );
|
||||
}
|
||||
|
||||
rename(from_ospath, to_ospath);
|
||||
}
|
||||
|
|
|
@ -641,7 +641,7 @@ fileHandle_t FS_FCreateOpenPipeFile( const char *filename );
|
|||
|
||||
fileHandle_t FS_SV_FOpenFileWrite( const char *filename );
|
||||
long FS_SV_FOpenFileRead( const char *filename, fileHandle_t *fp );
|
||||
void FS_SV_Rename( const char *from, const char *to );
|
||||
void FS_SV_Rename( const char *from, const char *to, qboolean safe );
|
||||
long FS_FOpenFileRead( const char *qpath, fileHandle_t *file, qboolean uniqueFILE );
|
||||
// if uniqueFILE is true, then a new FILE will be fopened even if the file
|
||||
// is found in an already open pak file. If uniqueFILE is false, you must call
|
||||
|
|
Loading…
Reference in a new issue