Permalink
Browse files

Don't load .pk3s as .dlls, and don't load user config files from .pk3s.

  • Loading branch information...
SmileTheory committed Mar 13, 2017
1 parent cd41690 commit 376267d534476a875d8b9228149c4ee18b74a4fd
Showing with 15 additions and 2 deletions.
  1. +2 −2 code/client/cl_main.c
  2. +6 −0 code/qcommon/files.c
  3. +7 −0 code/sys/sys_main.c
View
@@ -3200,7 +3200,7 @@ void CL_InitRef( void ) {
Com_Printf( "----- Initializing Renderer ----\n" );
#ifdef USE_RENDERER_DLOPEN
- cl_renderer = Cvar_Get("cl_renderer", "opengl2", CVAR_ARCHIVE | CVAR_LATCH);
+ cl_renderer = Cvar_Get("cl_renderer", "opengl2", CVAR_ARCHIVE | CVAR_LATCH | CVAR_PROTECTED);
Com_sprintf(dllName, sizeof(dllName), "renderer_%s_" ARCH_STRING DLL_EXT, cl_renderer->string);
@@ -3551,7 +3551,7 @@ void CL_Init( void ) {
cl_allowDownload = Cvar_Get ("cl_allowDownload", "0", CVAR_ARCHIVE);
#ifdef USE_CURL_DLOPEN
- cl_cURLLib = Cvar_Get("cl_cURLLib", DEFAULT_CURL_LIB, CVAR_ARCHIVE);
+ cl_cURLLib = Cvar_Get("cl_cURLLib", DEFAULT_CURL_LIB, CVAR_ARCHIVE | CVAR_PROTECTED);
#endif
cl_conXOffset = Cvar_Get ("cl_conXOffset", "0", 0);
View
@@ -1364,12 +1364,18 @@ long FS_FOpenFileRead(const char *filename, fileHandle_t *file, qboolean uniqueF
{
searchpath_t *search;
long len;
+ qboolean isLocalConfig;
if(!fs_searchpaths)
Com_Error(ERR_FATAL, "Filesystem call made without initialization");
+ isLocalConfig = !strcmp(filename, "autoexec.cfg") || !strcmp(filename, Q3CONFIG_CFG);
for(search = fs_searchpaths; search; search = search->next)
{
+ // autoexec.cfg and q3config.cfg can only be loaded outside of pk3 files.
+ if (isLocalConfig && search->pack)
+ continue;
+
len = FS_FOpenFileReadDir(filename, search, file, uniqueFILE, qfalse);
if(file == NULL)
View
@@ -500,6 +500,13 @@ void *Sys_LoadDll(const char *name, qboolean useSystemLib)
{
void *dllhandle;
+ // Don't load any DLLs that end with the pk3 extension
+ if (COM_CompareExtension(name, ".pk3"))
+ {
+ Com_Printf("Rejecting DLL named \"%s\"", name);
+ return NULL;
+ }
+
if(useSystemLib)
Com_Printf("Trying to load \"%s\"...\n", name);

0 comments on commit 376267d

Please sign in to comment.