summaryrefslogtreecommitdiff
path: root/src/setup
diff options
context:
space:
mode:
authorSimon Howard2014-10-24 20:29:56 -0400
committerSimon Howard2014-10-24 20:29:56 -0400
commit9d01d090c48c74a29b4ef67e0cd204772a2193c3 (patch)
tree3a8dce09c81c6cd9db8adf266d5cc6eae366af98 /src/setup
parentb42b5269e0ad5b22acd6043429ec4013a4e76ddd (diff)
downloadchocolate-doom-9d01d090c48c74a29b4ef67e0cd204772a2193c3.tar.gz
chocolate-doom-9d01d090c48c74a29b4ef67e0cd204772a2193c3.tar.bz2
chocolate-doom-9d01d090c48c74a29b4ef67e0cd204772a2193c3.zip
Replace strdup() with M_StringDuplicate().
strdup() can theoretically fail and return NULL. This could lead to a crash or undesirable behavior. Add M_StringDuplicate() which does the same thing but exits with an error if a string cannot be allocated. This fixes #456. Thanks to Quasar for the suggestion.
Diffstat (limited to 'src/setup')
-rw-r--r--src/setup/execute.c2
-rw-r--r--src/setup/multiplayer.c10
-rw-r--r--src/setup/sound.c5
3 files changed, 9 insertions, 8 deletions
diff --git a/src/setup/execute.c b/src/setup/execute.c
index 1fef6e44..bbb23c38 100644
--- a/src/setup/execute.c
+++ b/src/setup/execute.c
@@ -268,7 +268,7 @@ static char *GetFullExePath(const char *program)
if (sep == NULL)
{
- result = strdup(program);
+ result = M_StringDuplicate(program);
}
else
{
diff --git a/src/setup/multiplayer.c b/src/setup/multiplayer.c
index d833a495..f116ffb2 100644
--- a/src/setup/multiplayer.c
+++ b/src/setup/multiplayer.c
@@ -856,7 +856,7 @@ static void SelectQueryAddress(TXT_UNCAST_ARG(button),
// Set address to connect to:
free(connect_address);
- connect_address = strdup(button->label);
+ connect_address = M_StringDuplicate(button->label);
// Auto-choose IWAD if there is already a player connected.
@@ -1044,7 +1044,7 @@ void SetChatMacroDefaults(void)
{
if (chat_macros[i] == NULL)
{
- chat_macros[i] = strdup(defaults[i]);
+ chat_macros[i] = M_StringDuplicate(defaults[i]);
}
}
}
@@ -1053,12 +1053,12 @@ void SetPlayerNameDefault(void)
{
if (net_player_name == NULL)
{
- net_player_name = strdup(getenv("USER"));
+ net_player_name = M_StringDuplicate(getenv("USER"));
}
if (net_player_name == NULL)
{
- net_player_name = strdup(getenv("USERNAME"));
+ net_player_name = M_StringDuplicate(getenv("USERNAME"));
}
// On Windows, environment variables are in OEM codepage
@@ -1073,7 +1073,7 @@ void SetPlayerNameDefault(void)
if (net_player_name == NULL)
{
- net_player_name = strdup("player");
+ net_player_name = M_StringDuplicate("player");
}
}
diff --git a/src/setup/sound.c b/src/setup/sound.c
index 76fc0564..2b9bfcbb 100644
--- a/src/setup/sound.c
+++ b/src/setup/sound.c
@@ -20,6 +20,7 @@
#include "textscreen.h"
#include "m_config.h"
+#include "m_misc.h"
#include "mode.h"
#include "sound.h"
@@ -324,8 +325,8 @@ void BindSoundVariables(void)
M_BindVariable("show_talk", &show_talk);
}
- timidity_cfg_path = strdup("");
- gus_patch_path = strdup("");
+ timidity_cfg_path = M_StringDuplicate("");
+ gus_patch_path = M_StringDuplicate("");
// Default sound volumes - different games use different values.