mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2025-06-04 10:30:52 +00:00
work towards a more secure qfs
This commit is contained in:
parent
68d2167c9e
commit
851d203916
19 changed files with 193 additions and 167 deletions
|
@ -324,7 +324,7 @@ Model_NextDownload (void)
|
|||
"downloaded.\n\n", cl.model_name[i]);
|
||||
Con_Printf ("You may need to download or purchase a %s client "
|
||||
"pack in order to play on this server.\n\n",
|
||||
qfs_gamedir_file);
|
||||
qfs_gamedir->gamedir);
|
||||
CL_Disconnect ();
|
||||
return;
|
||||
}
|
||||
|
@ -489,18 +489,14 @@ CL_ParseDownload (void)
|
|||
}
|
||||
// open the file if not opened yet
|
||||
if (!cls.download) {
|
||||
if (!qfs_gamedir->skinpath
|
||||
|| !*qfs_gamedir->skinpath
|
||||
|| strncmp (cls.downloadtempname, "skins/", 6))
|
||||
snprintf (name, sizeof (name), "%s/%s", qfs_gamedir_path,
|
||||
if (strncmp (cls.downloadtempname, "skins/", 6))
|
||||
snprintf (name, sizeof (name), "%s/%s", qfs_gamedir->dir.def,
|
||||
cls.downloadtempname);
|
||||
else
|
||||
snprintf (name, sizeof (name), "%s/%s/%s", fs_userpath->string,
|
||||
qfs_gamedir->skinpath, cls.downloadtempname);
|
||||
snprintf (name, sizeof (name), "%s/%s", qfs_gamedir->dir.skins,
|
||||
cls.downloadtempname + 6);
|
||||
|
||||
QFS_CreatePath (name);
|
||||
|
||||
cls.download = Qopen (name, "wb");
|
||||
cls.download = QFS_WOpen (name, 0);
|
||||
if (!cls.download) {
|
||||
cls.downloadname[0] = 0;
|
||||
net_message->readcount += size;
|
||||
|
@ -532,20 +528,18 @@ CL_ParseDownload (void)
|
|||
|
||||
// rename the temp file to it's final name
|
||||
if (strcmp (cls.downloadtempname, cls.downloadname)) {
|
||||
if (!qfs_gamedir->skinpath
|
||||
|| !*qfs_gamedir->skinpath
|
||||
|| strncmp (cls.downloadtempname, "skins/", 6)) {
|
||||
snprintf (oldn, sizeof (oldn), "%s/%s", qfs_gamedir_path,
|
||||
if (strncmp (cls.downloadtempname, "skins/", 6)) {
|
||||
snprintf (oldn, sizeof (oldn), "%s/%s", qfs_gamedir->dir.def,
|
||||
cls.downloadtempname);
|
||||
snprintf (newn, sizeof (newn), "%s/%s", qfs_gamedir_path,
|
||||
snprintf (newn, sizeof (newn), "%s/%s", qfs_gamedir->dir.def,
|
||||
cls.downloadname);
|
||||
} else {
|
||||
snprintf (oldn, sizeof (oldn), "%s/%s/%s", fs_userpath->string,
|
||||
qfs_gamedir->skinpath, cls.downloadtempname);
|
||||
snprintf (newn, sizeof (newn), "%s/%s/%s", fs_userpath->string,
|
||||
qfs_gamedir->skinpath, cls.downloadname);
|
||||
snprintf (oldn, sizeof (oldn), "%s/%s", qfs_gamedir->dir.skins,
|
||||
cls.downloadtempname + 6);
|
||||
snprintf (newn, sizeof (newn), "%s/%s", qfs_gamedir->dir.skins,
|
||||
cls.downloadname + 6);
|
||||
}
|
||||
r = Qrename (oldn, newn);
|
||||
r = QFS_Rename (oldn, newn);
|
||||
if (r)
|
||||
Con_Printf ("failed to rename, %s.\n", strerror (errno));
|
||||
}
|
||||
|
@ -679,7 +673,7 @@ CL_ParseServerData (void)
|
|||
// game directory
|
||||
str = MSG_ReadString (net_message);
|
||||
|
||||
if (!strequal (qfs_gamedir_file, str)) {
|
||||
if (!strequal (qfs_gamedir->gamedir, str)) {
|
||||
// save current config
|
||||
Host_WriteConfiguration ();
|
||||
cflag = true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue