tPatch from Barry deFreese; remove deprecated code, and fix unsafe use of format strings. - vaccinewars - be a doctor and try to vaccinate the world
(HTM) git clone git://src.adamsgaard.dk/vaccinewars
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 1edff0de84a71af1c637e1cfc1558eba47abc94a
(DIR) parent d954538689ac49f9a3a254dfb42207529e54c8ac
(HTM) Author: Ben Webb <ben@salilab.org>
Date: Tue, 9 Jul 2013 05:55:00 +0000
Patch from Barry deFreese; remove deprecated code, and fix unsafe
use of format strings.
Diffstat:
M src/curses_client/curses_client.c | 6 +++---
M src/dopewars.c | 22 +++++++++++-----------
M src/gtkport/gtkport.c | 2 +-
M src/gui_client/gtk_client.c | 12 ++++++------
M src/gui_client/newgamedia.c | 7 ++++---
M src/network.c | 12 ++++++------
M src/serverside.c | 20 ++++++++++----------
M src/sound.c | 2 +-
8 files changed, 42 insertions(+), 41 deletions(-)
---
(DIR) diff --git a/src/curses_client/curses_client.c b/src/curses_client/curses_client.c
t@@ -649,14 +649,14 @@ static gboolean ConnectToServer(Player *Play)
errstr = g_string_new("");
- if (g_strcasecmp(ServerName, SN_META) == 0 || ConnectMethod == CM_META) {
+ if (g_ascii_strncasecmp(ServerName, SN_META, strlen(SN_META)) == 0 || ConnectMethod == CM_META) {
ConnectMethod = CM_META;
MetaOK = SelectServerFromMetaServer(Play, errstr);
- } else if (g_strcasecmp(ServerName, SN_PROMPT) == 0 ||
+ } else if (g_ascii_strncasecmp(ServerName, SN_PROMPT, strlen(SN_PROMPT)) == 0 ||
ConnectMethod == CM_PROMPT) {
ConnectMethod = CM_PROMPT;
SelectServerManually();
- } else if (g_strcasecmp(ServerName, SN_SINGLE) == 0 ||
+ } else if (g_ascii_strncasecmp(ServerName, SN_SINGLE, strlen(SN_SINGLE)) == 0 ||
ConnectMethod == CM_SINGLE) {
ConnectMethod = CM_SINGLE;
g_string_free(errstr, TRUE);
(DIR) diff --git a/src/dopewars.c b/src/dopewars.c
t@@ -1406,18 +1406,18 @@ int GetNextDrugIndex(int OldIndex, Player *Play)
if (Play->Drugs[i].Price != 0 && i != OldIndex && i != MaxIndex &&
(MaxIndex == -1
|| (DrugSortMethod == DS_ATOZ
- && g_strcasecmp(Drug[MaxIndex].Name, Drug[i].Name) > 0)
+ && g_ascii_strncasecmp(Drug[MaxIndex].Name, Drug[i].Name, strlen(Drug[i].Name)) > 0)
|| (DrugSortMethod == DS_ZTOA
- && g_strcasecmp(Drug[MaxIndex].Name, Drug[i].Name) < 0)
+ && g_ascii_strncasecmp(Drug[MaxIndex].Name, Drug[i].Name, strlen(Drug[i].Name)) < 0)
|| (DrugSortMethod == DS_CHEAPFIRST
&& Play->Drugs[MaxIndex].Price > Play->Drugs[i].Price)
|| (DrugSortMethod == DS_CHEAPLAST
&& Play->Drugs[MaxIndex].Price < Play->Drugs[i].Price)) &&
(OldIndex == -1
|| (DrugSortMethod == DS_ATOZ
- && g_strcasecmp(Drug[OldIndex].Name, Drug[i].Name) <= 0)
+ && g_ascii_strncasecmp(Drug[OldIndex].Name, Drug[i].Name, strlen(Drug[i].Name)) <= 0)
|| (DrugSortMethod == DS_ZTOA
- && g_strcasecmp(Drug[OldIndex].Name, Drug[i].Name) >= 0)
+ && g_ascii_strncasecmp(Drug[OldIndex].Name, Drug[i].Name, strlen(Drug[i].Name)) >= 0)
|| (DrugSortMethod == DS_CHEAPFIRST
&& Play->Drugs[OldIndex].Price <= Play->Drugs[i].Price)
|| (DrugSortMethod == DS_CHEAPLAST
t@@ -1909,7 +1909,7 @@ gboolean ParseNextConfig(GScanner *scanner, Converter *conv,
return FALSE;
}
- if (g_strcasecmp(scanner->value.v_identifier, "include") == 0) {
+ if (g_ascii_strncasecmp(scanner->value.v_identifier, "include", 7) == 0) {
token = g_scanner_get_next_token(scanner);
if (token == G_TOKEN_STRING) {
if (!ReadConfigFile(scanner->value.v_string, NULL)) {
t@@ -1922,7 +1922,7 @@ gboolean ParseNextConfig(GScanner *scanner, Converter *conv,
NULL, NULL, FALSE);
return FALSE;
}
- } else if (g_strcasecmp(scanner->value.v_identifier, "encoding") == 0) {
+ } else if (g_ascii_strncasecmp(scanner->value.v_identifier, "encoding", 8) == 0) {
token = g_scanner_get_next_token(scanner);
if (token == G_TOKEN_STRING) {
Conv_SetCodeset(conv, scanner->value.v_string);
t@@ -2002,13 +2002,13 @@ int GetGlobalIndex(gchar *ID1, gchar *ID2)
if (!ID1)
return -1;
for (i = 0; i < NumGlob; i++) {
- if (g_strcasecmp(ID1, Globals[i].Name) == 0
+ if (g_ascii_strncasecmp(ID1, Globals[i].Name, strlen(Globals[i].Name)) == 0
&& !Globals[i].NameStruct[0]) {
/* Just a bog-standard ID1=value */
return i;
}
- if (g_strcasecmp(ID1, Globals[i].NameStruct) == 0 && ID2
- && g_strcasecmp(ID2, Globals[i].Name) == 0
+ if (g_ascii_strncasecmp(ID1, Globals[i].NameStruct, strlen(Globals[i].NameStruct)) == 0 && ID2
+ && g_ascii_strncasecmp(ID2, Globals[i].Name, strlen(Globals[i].Name)) == 0
&& Globals[i].StructStaticPt && Globals[i].StructListPt) {
/* ID1[index].ID2=value */
return i;
t@@ -2242,11 +2242,11 @@ static gboolean SetConfigValue(int GlobalIndex, int StructIndex,
G_CSET_a_2_z "._0123456789" G_CSET_A_2_Z;
parsed = FALSE;
if (token == G_TOKEN_IDENTIFIER) {
- if (g_strcasecmp(scanner->value.v_identifier, "TRUE") == 0 ||
+ if (g_ascii_strncasecmp(scanner->value.v_identifier, "TRUE", 4) == 0 ||
strcmp(scanner->value.v_identifier, "1") == 0) {
parsed = TRUE;
*GetGlobalBoolean(GlobalIndex, StructIndex) = TRUE;
- } else if (g_strcasecmp(scanner->value.v_identifier, "FALSE") == 0
+ } else if (g_ascii_strncasecmp(scanner->value.v_identifier, "FALSE", 5) == 0
|| strcmp(scanner->value.v_identifier, "0") == 0) {
parsed = TRUE;
*GetGlobalBoolean(GlobalIndex, StructIndex) = FALSE;
(DIR) diff --git a/src/gtkport/gtkport.c b/src/gtkport/gtkport.c
t@@ -5613,7 +5613,7 @@ gint GtkMessageBox(GtkWidget *parent, const gchar *Text,
dialog = gtk_message_dialog_new(GTK_WINDOW(parent),
GTK_DIALOG_MODAL,
- type, buttons, Text);
+ type, buttons, "%s", Text);
if (Title) gtk_window_set_title(GTK_WINDOW(dialog), Title);
retval = gtk_dialog_run(GTK_DIALOG(dialog));
(DIR) diff --git a/src/gui_client/gtk_client.c b/src/gui_client/gtk_client.c
t@@ -1560,8 +1560,8 @@ static void UpdateDealDialog(void)
MaxDrug = CanDrop;
}
- spin_adj = (GtkAdjustment *)gtk_adjustment_new(MaxDrug, 1.0, MaxDrug,
- 1.0, 10.0, 10.0);
+ spin_adj = (GtkAdjustment *)gtk_adjustment_new(MaxDrug, 0.0, MaxDrug,
+ 1.0, 10.0, 0.0);
gtk_spin_button_set_adjustment(GTK_SPIN_BUTTON(DealDialog.amount),
spin_adj);
gtk_spin_button_set_value(GTK_SPIN_BUTTON(DealDialog.amount), MaxDrug);
t@@ -1735,8 +1735,8 @@ void DealDrugs(GtkWidget *widget, gpointer data)
}
label = gtk_label_new(text->str);
gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
- spin_adj = (GtkAdjustment *)gtk_adjustment_new(1.0, 1.0, 2.0,
- 1.0, 10.0, 10.0);
+ spin_adj = (GtkAdjustment *)gtk_adjustment_new(1.0, 0.0, 2.0,
+ 1.0, 10.0, 0.0);
spinner = DealDialog.amount = gtk_spin_button_new(spin_adj, 1.0, 0);
gtk_signal_connect(GTK_OBJECT(spinner), "activate",
GTK_SIGNAL_FUNC(DealOKCallback), data);
t@@ -2013,9 +2013,9 @@ static gint DrugSortFunc(GtkCList *clist, gconstpointer ptr1,
switch (DrugSortMethod) {
case DS_ATOZ:
- return g_strcasecmp(Drug[index1].Name, Drug[index2].Name);
+ return g_ascii_strncasecmp(Drug[index1].Name, Drug[index2].Name, strlen(Drug[index2].Name));
case DS_ZTOA:
- return g_strcasecmp(Drug[index2].Name, Drug[index1].Name);
+ return g_ascii_strncasecmp(Drug[index2].Name, Drug[index1].Name, strlen(Drug[index1].Name));
case DS_CHEAPFIRST:
pricediff = ClientData.Play->Drugs[index1].Price -
ClientData.Play->Drugs[index2].Price;
(DIR) diff --git a/src/gui_client/newgamedia.c b/src/gui_client/newgamedia.c
t@@ -24,6 +24,7 @@
#include <config.h>
#endif
+#include <string.h>
#include <stdlib.h> /* For atoi */
#include <glib.h>
t@@ -527,12 +528,12 @@ void NewGameDialog(Player *play)
entry = stgam.hostname = gtk_entry_new();
ServerEntry = "localhost";
- if (g_strcasecmp(ServerName, SN_META) == 0) {
+ if (g_ascii_strncasecmp(ServerName, SN_META, strlen(SN_META)) == 0) {
NewGameType = 2;
UpdateMeta = TRUE;
- } else if (g_strcasecmp(ServerName, SN_PROMPT) == 0)
+ } else if (g_ascii_strncasecmp(ServerName, SN_PROMPT, strlen(SN_PROMPT)) == 0)
NewGameType = 0;
- else if (g_strcasecmp(ServerName, SN_SINGLE) == 0)
+ else if (g_ascii_strncasecmp(ServerName, SN_SINGLE, strlen(SN_SINGLE)) == 0)
NewGameType = 1;
else
ServerEntry = ServerName;
(DIR) diff --git a/src/network.c b/src/network.c
t@@ -1295,7 +1295,7 @@ static gboolean ParseHtmlLocation(gchar *uri, gchar **host, unsigned *port,
gchar *uris, *colon, *slash;
uris = g_strstrip(uri);
- if (!uris || strlen(uris) < 7 || g_strncasecmp(uris, "http://", 7) != 0)
+ if (!uris || strlen(uris) < 7 || g_ascii_strncasecmp(uris, "http://", 7) != 0)
return FALSE;
uris += 7; /* skip to hostname */
t@@ -1345,8 +1345,8 @@ static void StartHttpAuth(HttpConnection *conn, gboolean proxy,
split = g_strsplit(header, " ", 2);
- if (split[0] && split[1] && g_strcasecmp(split[0], "Basic") == 0 &&
- g_strncasecmp(split[1], "realm=", 6) == 0 && strlen(split[1]) > 6) {
+ if (split[0] && split[1] && g_ascii_strncasecmp(split[0], "Basic", 5) == 0 &&
+ g_ascii_strncasecmp(split[1], "realm=", 6) == 0 && strlen(split[1]) > 6) {
realm = &split[1][6];
conn->waitinput = TRUE;
(*conn->authfunc) (conn, proxy, realm, conn->authdata);
t@@ -1366,7 +1366,7 @@ static void ParseHtmlHeader(gchar *line, HttpConnection *conn,
split = g_strsplit(line, " ", 2);
if (split[0] && split[1]) {
- if (g_strcasecmp(split[0], "Location:") == 0 &&
+ if (g_ascii_strncasecmp(split[0], "Location:", 9) == 0 &&
(conn->StatusCode == HEC_MOVETEMP
|| conn->StatusCode == HEC_MOVEPERM)) {
if (ParseHtmlLocation(split[1], &host, &port, &query)) {
t@@ -1380,10 +1380,10 @@ static void ParseHtmlHeader(gchar *line, HttpConnection *conn,
SetError(&conn->NetBuf.error, ÐTTP, HEC_BADREDIR,
g_strdup(line));
}
- } else if (g_strcasecmp(split[0], "WWW-Authenticate:") == 0 &&
+ } else if (g_ascii_strncasecmp(split[0], "WWW-Authenticate:", 17) == 0 &&
conn->StatusCode == HEC_AUTHREQ) {
StartHttpAuth(conn, FALSE, split[1], doneOK);
- } else if (g_strcasecmp(split[0], "Proxy-Authenticate:") == 0 &&
+ } else if (g_ascii_strncasecmp(split[0], "Proxy-Authenticate:", 19) == 0 &&
conn->StatusCode == HEC_PROXYAUTH) {
/* Proxy-Authenticate is, strictly speaking, an HTTP/1.1 thing, but
* some HTTP/1.0 proxies seem to support it anyway */
(DIR) diff --git a/src/serverside.c b/src/serverside.c
t@@ -1000,18 +1000,18 @@ static void HandleServerCommand(char *string, NetworkBuffer *netbuf,
}
g_scanner_input_text(Scanner, string, strlen(string));
if (!ParseNextConfig(Scanner, conv, NULL, TRUE)) {
- if (g_strcasecmp(string, "help") == 0 || g_strcasecmp(string, "h") == 0
+ if (g_ascii_strncasecmp(string, "help", 4) == 0 || g_ascii_strncasecmp(string, "h", 1) == 0
|| strcmp(string, "?") == 0) {
ServerHelp();
- } else if (g_strcasecmp(string, "quit") == 0) {
+ } else if (g_ascii_strncasecmp(string, "quit", 4) == 0) {
RequestServerShutdown();
- } else if (g_strncasecmp(string, "msg:", 4) == 0) {
+ } else if (g_ascii_strncasecmp(string, "msg:", 4) == 0) {
BroadcastToClients(C_NONE, C_MSG, string + 4, NULL, NULL);
- } else if (g_strncasecmp(string, "save ", 5) == 0) {
+ } else if (g_ascii_strncasecmp(string, "save ", 5) == 0) {
ServerSaveConfigFile(string + 5);
- } else if (g_strcasecmp(string, "save") == 0) {
+ } else if (g_ascii_strncasecmp(string, "save", 4) == 0) {
ServerSaveConfigFile(NULL);
- } else if (g_strcasecmp(string, "list") == 0) {
+ } else if (g_ascii_strncasecmp(string, "list", 4) == 0) {
if (FirstServer) {
g_print(_("Users currently logged on:-\n"));
for (list = FirstServer; list; list = g_slist_next(list)) {
t@@ -1022,14 +1022,14 @@ static void HandleServerCommand(char *string, NetworkBuffer *netbuf,
}
} else
g_print(_("No users currently logged on!\n"));
- } else if (g_strncasecmp(string, "push ", 5) == 0) {
+ } else if (g_ascii_strncasecmp(string, "push ", 5) == 0) {
tmp = GetPlayerByName(string + 5, FirstServer);
if (tmp) {
g_print(_("Pushing %s\n"), GetPlayerName(tmp));
SendServerMessage(NULL, C_NONE, C_PUSH, tmp, NULL);
} else
g_print(_("No such user!\n"));
- } else if (g_strncasecmp(string, "kill ", 5) == 0) {
+ } else if (g_ascii_strncasecmp(string, "kill ", 5) == 0) {
tmp = GetPlayerByName(string + 5, FirstServer);
if (tmp) {
/* The named user has been removed from the server following
t@@ -1050,13 +1050,13 @@ static void HandleServerCommand(char *string, NetworkBuffer *netbuf,
Player *HandleNewConnection(void)
{
- int cadsize;
+ socklen_t cadsize;
int ClientSock;
struct sockaddr_in ClientAddr;
Player *tmp;
cadsize = sizeof(struct sockaddr);
if ((ClientSock = accept(ListenSock, (struct sockaddr *)&ClientAddr,
- &cadsize)) == -1) {
+ &cadsize)) == -1) {
perror("accept socket");
exit(EXIT_FAILURE);
}
(DIR) diff --git a/src/sound.c b/src/sound.c
t@@ -190,7 +190,7 @@ void SoundOpen(gchar *drivername)
err = g_strdup_printf(_("Invalid plugin \"%s\" selected.\n"
"(%s available; now using \"%s\".)"),
drivername, plugins, NOPLUGIN);
- g_log(NULL, G_LOG_LEVEL_CRITICAL, err);
+ g_log(NULL, G_LOG_LEVEL_CRITICAL, "%s", err);
g_free(plugins);
g_free(err);
}