diff options
-rw-r--r-- | src/client/cl_curl.c | 2 | ||||
-rw-r--r-- | src/client/cl_parse.c | 2 | ||||
-rw-r--r-- | src/qcommon/files.c | 16 | ||||
-rw-r--r-- | src/qcommon/qcommon.h | 2 |
4 files changed, 13 insertions, 9 deletions
diff --git a/src/client/cl_curl.c b/src/client/cl_curl.c index ffc35557..8d083877 100644 --- a/src/client/cl_curl.c +++ b/src/client/cl_curl.c @@ -305,7 +305,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 { diff --git a/src/client/cl_parse.c b/src/client/cl_parse.c index 675c6855..d69af295 100644 --- a/src/client/cl_parse.c +++ b/src/client/cl_parse.c @@ -628,7 +628,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 diff --git a/src/qcommon/files.c b/src/qcommon/files.c index a9c43b43..f3e4ba70 100644 --- a/src/qcommon/files.c +++ b/src/qcommon/files.c @@ -532,17 +532,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 ) ); } } @@ -743,7 +745,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 ) { @@ -762,7 +764,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); } diff --git a/src/qcommon/qcommon.h b/src/qcommon/qcommon.h index 6f235ee9..bf195ec7 100644 --- a/src/qcommon/qcommon.h +++ b/src/qcommon/qcommon.h @@ -622,7 +622,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 |