projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
cleanup of network level function names and parameters
[rocksndiamonds.git]
/
src
/
network.c
diff --git
a/src/network.c
b/src/network.c
index bf12567b4bbc5836fa0b5502a96cfd3dbd5dfb5e..dcd925949a18dc1ccfc5ab5f65b53de00f8923b9 100644
(file)
--- a/
src/network.c
+++ b/
src/network.c
@@
-38,15
+38,6
@@
static struct NetworkClientPlayerInfo first_player =
NULL
};
NULL
};
-struct NetworkLevelFileInfo
-{
- char *leveldir_identifier;
- struct LevelFileInfo file_info;
- struct LevelFileInfo tmpl_info;
- boolean use_network_level_files;
- boolean use_custom_template;
-};
-
/* server stuff */
static TCPsocket sfd; /* TCP server socket */
/* server stuff */
static TCPsocket sfd; /* TCP server socket */
@@
-60,7
+51,7
@@
static boolean stop_network_game = FALSE;
static boolean stop_network_client = FALSE;
static char stop_network_client_message[MAX_OUTPUT_LINESIZE + 1];
static boolean stop_network_client = FALSE;
static char stop_network_client_message[MAX_OUTPUT_LINESIZE + 1];
-static struct NetworkLevel
File
Info network_level;
+static struct NetworkLevelInfo network_level;
static void DrawNetworkTextExt(char *message, int font_nr, boolean initialize)
{
static void DrawNetworkTextExt(char *message, int font_nr, boolean initialize)
{
@@
-182,6
+173,11
@@
char *getNetworkPlayerName(int player_nr)
return(EMPTY_PLAYER_NAME);
}
return(EMPTY_PLAYER_NAME);
}
+static boolean hasPathSeparator(char *s)
+{
+ return (strchr(s, '/') != NULL);
+}
+
static void StartNetworkServer(int port)
{
static int p;
static void StartNetworkServer(int port)
{
static int p;
@@
-694,16
+690,13
@@
static void Handle_OP_START_PLAYING()
level_nr = new_level_nr;
}
level_nr = new_level_nr;
}
- SetLevelSetInfo(new_leveldir_identifier, new_level_nr);
-
/* needed if level set of network game changed graphics, sounds or music */
ReloadCustomArtwork(0);
TapeErase();
if (network_level.use_network_level_files)
/* needed if level set of network game changed graphics, sounds or music */
ReloadCustomArtwork(0);
TapeErase();
if (network_level.use_network_level_files)
- LoadLevelFromNetwork(&network_level.file_info,
- &network_level.tmpl_info);
+ LoadNetworkLevel(&network_level);
else
LoadLevel(level_nr);
else
LoadLevel(level_nr);
@@
-827,6
+820,9
@@
static void Handle_OP_LEVEL_FILE()
leveldir_identifier = getStringCopy(getNetworkBufferString(read_buffer));
leveldir_identifier = getStringCopy(getNetworkBufferString(read_buffer));
+ if (hasPathSeparator(leveldir_identifier))
+ Error(ERR_EXIT, "protocol error: invalid filename from network client");
+
InitNetworkLevelDirectory(leveldir_identifier);
network_level_dir = getNetworkLevelDir(leveldir_identifier);
InitNetworkLevelDirectory(leveldir_identifier);
network_level_dir = getNetworkLevelDir(leveldir_identifier);
@@
-837,6
+833,9
@@
static void Handle_OP_LEVEL_FILE()
file_info->basename = getStringCopy(getNetworkBufferString(read_buffer));
file_info->filename = getPath2(network_level_dir, file_info->basename);
file_info->basename = getStringCopy(getNetworkBufferString(read_buffer));
file_info->filename = getPath2(network_level_dir, file_info->basename);
+ if (hasPathSeparator(file_info->basename))
+ Error(ERR_EXIT, "protocol error: invalid filename from network client");
+
getNetworkBufferFile(read_buffer, file_info->filename);
use_custom_template = getNetworkBuffer8BitInteger(read_buffer);
getNetworkBufferFile(read_buffer, file_info->filename);
use_custom_template = getNetworkBuffer8BitInteger(read_buffer);
@@
-847,6
+846,9
@@
static void Handle_OP_LEVEL_FILE()
tmpl_info->basename = getStringCopy(getNetworkBufferString(read_buffer));
tmpl_info->filename = getPath2(network_level_dir, tmpl_info->basename);
tmpl_info->basename = getStringCopy(getNetworkBufferString(read_buffer));
tmpl_info->filename = getPath2(network_level_dir, tmpl_info->basename);
+ if (hasPathSeparator(tmpl_info->basename))
+ Error(ERR_EXIT, "protocol error: invalid filename from network client");
+
getNetworkBufferFile(read_buffer, tmpl_info->filename);
}
getNetworkBufferFile(read_buffer, tmpl_info->filename);
}