Skip to content
Permalink
Browse files Browse the repository at this point in the history
All: Don't load .pk3s as .dlls, and don't load user config files from…
… .pk3s
  • Loading branch information
MAN-AT-ARMS committed Mar 13, 2017
1 parent 1efb19a commit b6ff2bc
Show file tree
Hide file tree
Showing 6 changed files with 30 additions and 4 deletions.
4 changes: 2 additions & 2 deletions MP/code/client/cl_main.c
Expand Up @@ -3674,7 +3674,7 @@ void CL_InitRef( void ) {
Com_Printf( "----- Initializing Renderer ----\n" );

#ifdef USE_RENDERER_DLOPEN
cl_renderer = Cvar_Get("cl_renderer", "opengl1", CVAR_ARCHIVE | CVAR_LATCH);
cl_renderer = Cvar_Get("cl_renderer", "opengl1", CVAR_ARCHIVE | CVAR_LATCH | CVAR_PROTECTED);

Com_sprintf(dllName, sizeof(dllName), "renderer_mp_%s_" ARCH_STRING DLL_EXT, cl_renderer->string);

Expand Down Expand Up @@ -4014,7 +4014,7 @@ void CL_Init( void ) {

cl_allowDownload = Cvar_Get( "cl_allowDownload", "1", 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

// init autoswitch so the ui will have it correctly even
Expand Down
6 changes: 6 additions & 0 deletions MP/code/qcommon/files.c
Expand Up @@ -1424,12 +1424,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 wolfconfig_mp.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)
Expand Down
7 changes: 7 additions & 0 deletions MP/code/sys/sys_main.c
Expand Up @@ -499,6 +499,13 @@ from executable path, then fs_basepath.
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);
Expand Down
4 changes: 2 additions & 2 deletions SP/code/client/cl_main.c
Expand Up @@ -3348,7 +3348,7 @@ void CL_InitRef( void ) {
Com_Printf( "----- Initializing Renderer ----\n" );

#ifdef USE_RENDERER_DLOPEN
cl_renderer = Cvar_Get("cl_renderer", "opengl1", CVAR_ARCHIVE | CVAR_LATCH);
cl_renderer = Cvar_Get("cl_renderer", "opengl1", CVAR_ARCHIVE | CVAR_LATCH | CVAR_PROTECTED);

Com_sprintf(dllName, sizeof(dllName), "renderer_sp_%s_" ARCH_STRING DLL_EXT, cl_renderer->string);

Expand Down Expand Up @@ -3690,7 +3690,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

// init autoswitch so the ui will have it correctly even
Expand Down
6 changes: 6 additions & 0 deletions SP/code/qcommon/files.c
Expand Up @@ -1591,12 +1591,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 wolfconfig.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)
Expand Down
7 changes: 7 additions & 0 deletions SP/code/sys/sys_main.c
Expand Up @@ -499,6 +499,13 @@ from executable path, then fs_basepath.
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);
Expand Down

0 comments on commit b6ff2bc

Please sign in to comment.