mirror of
https://github.com/ioquake/ioq3.git
synced 2024-11-10 07:11:46 +00:00
Save connect and playdemo argument before calling CL_Disconnect()
Save argument instead of using a pointer to cmd token memory that might be overwritten when Cmd_TokenizeString() is called. No known method for causing the issue without engine changes. Cmd_TokenizeString() is called by FS_PureServerSetReferencedPaks() in CL_Disconnect() but it's not an issue because the string is blank. Thanks @mickael9.
This commit is contained in:
parent
351e8f84d2
commit
eecc8326a0
1 changed files with 6 additions and 5 deletions
|
@ -1069,7 +1069,8 @@ demo <demoname>
|
|||
*/
|
||||
void CL_PlayDemo_f( void ) {
|
||||
char name[MAX_OSPATH];
|
||||
char *arg, *ext_test;
|
||||
char arg[MAX_OSPATH];
|
||||
char *ext_test;
|
||||
int protocol, i;
|
||||
char retry[MAX_OSPATH];
|
||||
|
||||
|
@ -1083,7 +1084,7 @@ void CL_PlayDemo_f( void ) {
|
|||
Cvar_Set( "sv_killserver", "2" );
|
||||
|
||||
// open the demo file
|
||||
arg = Cmd_Argv(1);
|
||||
Q_strncpyz( arg, Cmd_Argv(1), sizeof( arg ) );
|
||||
|
||||
CL_Disconnect( qtrue );
|
||||
|
||||
|
@ -1690,7 +1691,7 @@ CL_Connect_f
|
|||
================
|
||||
*/
|
||||
void CL_Connect_f( void ) {
|
||||
char *server;
|
||||
char server[MAX_OSPATH];
|
||||
const char *serverString;
|
||||
int argc = Cmd_Argc();
|
||||
netadrtype_t family = NA_UNSPEC;
|
||||
|
@ -1701,7 +1702,7 @@ void CL_Connect_f( void ) {
|
|||
}
|
||||
|
||||
if(argc == 2)
|
||||
server = Cmd_Argv(1);
|
||||
Q_strncpyz( server, Cmd_Argv(1), sizeof( server ) );
|
||||
else
|
||||
{
|
||||
if(!strcmp(Cmd_Argv(1), "-4"))
|
||||
|
@ -1711,7 +1712,7 @@ void CL_Connect_f( void ) {
|
|||
else
|
||||
Com_Printf( "warning: only -4 or -6 as address type understood.\n");
|
||||
|
||||
server = Cmd_Argv(2);
|
||||
Q_strncpyz( server, Cmd_Argv(2), sizeof( server ) );
|
||||
}
|
||||
|
||||
// save arguments for reconnect
|
||||
|
|
Loading…
Reference in a new issue