shithub: choc

Download patch

ref: 01ae851bf998330a9ca95467e238c507aa55cae1
parent: 6bb5f78bd2bdf10ddbb087171c6f640d425c9d40
author: Simon Howard <fraggle@gmail.com>
date: Sun Mar 30 15:00:49 EDT 2014

hexen: Eliminate use of sprintf().

Use snprintf() in place of sprintf(). This is part of fixing #371.

--- a/src/hexen/am_map.c
+++ b/src/hexen/am_map.c
@@ -1474,7 +1474,8 @@
         else
         {
             MN_DrTextA(PlayerColorText[order[i]], 8, yPosition);
-            sprintf(textBuffer, "%d", fragCount[order[i]]);
+            snprintf(textBuffer, sizeof(textBuffer),
+                     "%d", fragCount[order[i]]);
             MN_DrTextA(textBuffer, 80, yPosition);
             yPosition += 10;
         }
@@ -1508,7 +1509,8 @@
     worldTimer -= minutes * 60;
     seconds = worldTimer;
 
-    sprintf(timeBuffer, "%.2d : %.2d : %.2d", hours, minutes, seconds);
+    snprintf(timeBuffer, sizeof(timeBuffer),
+             "%.2d : %.2d : %.2d", hours, minutes, seconds);
     MN_DrTextA(timeBuffer, 240, 8);
 
     if (days)
@@ -1515,11 +1517,11 @@
     {
         if (days == 1)
         {
-            sprintf(dayBuffer, "%.2d DAY", days);
+            snprintf(dayBuffer, sizeof(dayBuffer), "%.2d DAY", days);
         }
         else
         {
-            sprintf(dayBuffer, "%.2d DAYS", days);
+            snprintf(dayBuffer, sizeof(dayBuffer), "%.2d DAYS", days);
         }
         MN_DrTextA(dayBuffer, 240, 20);
         if (days >= 5)
--- a/src/hexen/h2_main.c
+++ b/src/hexen/h2_main.c
@@ -172,7 +172,7 @@
     {
         char buf[12];
 
-        sprintf(buf, "chatmacro%i", i);
+        snprintf(buf, sizeof(buf), "chatmacro%i", i);
         M_BindVariable(buf, &chat_macros[i]);
     }
 }
@@ -190,7 +190,7 @@
     if (!strcmp(SavePath, ""))
     {
         SavePath = malloc(10);
-	sprintf(SavePath, "hexndata%c", DIR_SEPARATOR);
+	snprintf(SavePath, 10, "hexndata%c", DIR_SEPARATOR);
     }
 }
 
@@ -632,7 +632,7 @@
     if (M_CheckParm("-debugfile"))
     {
         char filename[20];
-        sprintf(filename, "debug%i.txt", consoleplayer);
+        snprintf(filename, sizeof(filename), "debug%i.txt", consoleplayer);
         debugfile = fopen(filename, "w");
     }
     I_SetWindowTitle("Hexen");
--- a/src/hexen/in_lude.c
+++ b/src/hexen/in_lude.c
@@ -537,7 +537,8 @@
 
     if (!(val < -9 && wrapThresh < 1000))
     {
-        sprintf(buff, "%d", val >= wrapThresh ? val % wrapThresh : val);
+        snprintf(buff, sizeof(buff), "%d",
+                 val >= wrapThresh ? val % wrapThresh : val);
     }
     MN_DrTextA(buff, x - MN_TextAWidth(buff) / 2, y);
 }
@@ -554,7 +555,8 @@
 
     if (!(val < -9 && wrapThresh < 1000))
     {
-        sprintf(buff, "%d", val >= wrapThresh ? val % wrapThresh : val);
+        snprintf(buff, sizeof(buff), "%d",
+                 val >= wrapThresh ? val % wrapThresh : val);
     }
     MN_DrTextAYellow(buff, x - MN_TextAWidth(buff) / 2, y);
 }
--- a/src/hexen/mn_menu.c
+++ b/src/hexen/mn_menu.c
@@ -685,7 +685,7 @@
     char name[100];
     char versionText[HXS_VERSION_TEXT_LENGTH];
 
-    sprintf(name, "%shex%d.hxs", SavePath, slot);
+    snprintf(name, sizeof(name), "%shex%d.hxs", SavePath, slot);
 
     fp = fopen(name, "rb");
 
--- a/src/hexen/p_acs.c
+++ b/src/hexen/p_acs.c
@@ -443,7 +443,8 @@
     if (infoIndex == -1)
     {                           // Script not found
         //I_Error("P_StartACS: Unknown script number %d", number);
-        sprintf(ErrorMsg, "P_STARTACS ERROR: UNKNOWN SCRIPT %d", number);
+        snprintf(ErrorMsg, sizeof(ErrorMsg),
+                 "P_STARTACS ERROR: UNKNOWN SCRIPT %d", number);
         P_SetMessage(&players[consoleplayer], ErrorMsg, true);
     }
     statePtr = &ACSInfo[infoIndex].state;
@@ -539,8 +540,8 @@
     {
         if (!(mo->player->keys & (1 << (lock - 1))))
         {
-            sprintf(LockedBuffer, "YOU NEED THE %s\n",
-                    TextKeyMessages[lock - 1]);
+            snprintf(LockedBuffer, sizeof(LockedBuffer),
+                     "YOU NEED THE %s\n", TextKeyMessages[lock - 1]);
             P_SetMessage(mo->player, LockedBuffer, true);
             S_StartSound(mo, SFX_DOOR_LOCKED);
             return false;
--- a/src/hexen/p_setup.c
+++ b/src/hexen/p_setup.c
@@ -700,7 +700,7 @@
     P_InitThinkers();
     leveltime = 0;
 
-    sprintf(lumpname, "MAP%02d", map);
+    snprintf(lumpname, sizeof(lumpname), "MAP%02d", map);
     lumpnum = W_GetNumForName(lumpname);
     //
     // Begin processing map lumps
--- a/src/hexen/p_spec.c
+++ b/src/hexen/p_spec.c
@@ -428,7 +428,8 @@
     }
     if (!(mo->player->keys & (1 << (lock - 1))))
     {
-        sprintf(LockedBuffer, "YOU NEED THE %s\n", TextKeyMessages[lock - 1]);
+        snprintf(LockedBuffer, sizeof(LockedBuffer),
+                 "YOU NEED THE %s\n", TextKeyMessages[lock - 1]);
         P_SetMessage(mo->player, LockedBuffer, true);
         S_StartSound(mo, SFX_DOOR_LOCKED);
         return false;
--- a/src/hexen/sb_bar.c
+++ b/src/hexen/sb_bar.c
@@ -640,20 +640,20 @@
             MN_DrTextA("------", xPos[0], y);
             continue;
         }
-        sprintf(text, "%s", c->name);
+        snprintf(text, sizeof(text), "%s", c->name);
         M_ForceUppercase(text);
         MN_DrTextA(text, xPos[x++], y);
-        sprintf(text, "%d", c->mo->type);
+        snprintf(text, sizeof(text), "%d", c->mo->type);
         MN_DrTextA(text, xPos[x++], y);
-        sprintf(text, "%d", c->mo->x >> FRACBITS);
+        snprintf(text, sizeof(text), "%d", c->mo->x >> FRACBITS);
         MN_DrTextA(text, xPos[x++], y);
-        sprintf(text, "%d", c->mo->y >> FRACBITS);
+        snprintf(text, sizeof(text), "%d", c->mo->y >> FRACBITS);
         MN_DrTextA(text, xPos[x++], y);
-        sprintf(text, "%d", (int) c->id);
+        snprintf(text, sizeof(text), "%d", (int) c->id);
         MN_DrTextA(text, xPos[x++], y);
-        sprintf(text, "%d", c->priority);
+        snprintf(text, sizeof(text), "%d", c->priority);
         MN_DrTextA(text, xPos[x++], y);
-        sprintf(text, "%d", c->distance);
+        snprintf(text, sizeof(text), "%d", c->distance);
         MN_DrTextA(text, xPos[x++], y);
     }
     UpdateState |= I_FULLSCRN;
@@ -1738,7 +1738,7 @@
         P_SetMessage(player, TXT_CHEATBADINPUT, true);
         return;
     }
-    sprintf(mapName, "MAP%02d", map);
+    snprintf(mapName, sizeof(mapName), "MAP%02d", map);
     if (W_CheckNumForName(mapName) == -1)
     {                       // Can't find
         P_SetMessage(player, TXT_CHEATNOMAP, true);
@@ -1769,7 +1769,7 @@
     char buffer[80];
 
     count = P_Massacre();
-    sprintf(buffer, "%d MONSTERS KILLED\n", count);
+    snprintf(buffer, sizeof(buffer), "%d MONSTERS KILLED\n", count);
     P_SetMessage(player, buffer, true);
 }
 
@@ -1857,11 +1857,12 @@
 static void CheatDebugFunc(player_t * player, Cheat_t * cheat)
 {
     char textBuffer[50];
-    sprintf(textBuffer, "MAP %d (%d)  X:%5d  Y:%5d  Z:%5d",
-            P_GetMapWarpTrans(gamemap),
-            gamemap,
-            player->mo->x >> FRACBITS,
-            player->mo->y >> FRACBITS, player->mo->z >> FRACBITS);
+    snprintf(textBuffer, sizeof(textBuffer),
+             "MAP %d (%d)  X:%5d  Y:%5d  Z:%5d",
+             P_GetMapWarpTrans(gamemap),
+             gamemap,
+             player->mo->x >> FRACBITS,
+             player->mo->y >> FRACBITS, player->mo->z >> FRACBITS);
     P_SetMessage(player, textBuffer, true);
 }
 
@@ -1896,7 +1897,8 @@
 
     if (P_StartACS(script, 0, script_args, player->mo, NULL, 0))
     {
-        sprintf(textBuffer, "RUNNING SCRIPT %.2d", script);
+        snprintf(textBuffer, sizeof(textBuffer),
+                 "RUNNING SCRIPT %.2d", script);
         P_SetMessage(player, textBuffer, true);
     }
 }
@@ -1928,7 +1930,7 @@
         P_SetMessage(player, "ERROR INITIALIZING CD", true);
     }
 
-    sprintf(buffer, "ENTER DESIRED CD TRACK (%.2d - %.2d):\n",
+    snprintf(buffer, sizeof(buffer), "ENTER DESIRED CD TRACK (%.2d - %.2d):\n",
             I_CDMusFirstTrack(), I_CDMusLastTrack());
     P_SetMessage(player, buffer, true);
 }
@@ -1966,13 +1968,14 @@
 
     if (!S_StartCustomCDTrack(track))
     {
-        sprintf(buffer, "ERROR WHILE TRYING TO PLAY CD TRACK: %.2d\n", track);
+        snprintf(buffer, sizeof(buffer),
+                 "ERROR WHILE TRYING TO PLAY CD TRACK: %.2d\n", track);
         P_SetMessage(player, buffer, true);
     }
     else
     {
         // No error encountered while attempting to play the track
-        sprintf(buffer, "PLAYING TRACK: %.2d\n", track);
+        snprintf(buffer, sizeof(buffer), "PLAYING TRACK: %.2d\n", track);
         P_SetMessage(player, buffer, true);
     }
 }
--- a/src/hexen/sc_man.c
+++ b/src/hexen/sc_man.c
@@ -88,7 +88,7 @@
 
     if (sc_FileScripts == true)
     {
-        sprintf(fileName, "%s%s.txt", sc_ScriptsDir, name);
+        snprintf(fileName, sizeof(fileName), "%s%s.txt", sc_ScriptsDir, name);
         SC_OpenFile(fileName);
     }
     else
--- a/src/hexen/sv_save.c
+++ b/src/hexen/sv_save.c
@@ -1940,7 +1940,7 @@
     unsigned int i;
 
     // Open the output file
-    sprintf(fileName, "%shex6.hxs", SavePath);
+    snprintf(fileName, sizeof(fileName), "%shex6.hxs", SavePath);
     OpenStreamOut(fileName);
 
     // Write game save description
@@ -2000,7 +2000,7 @@
     SavingPlayers = savePlayers;
 
     // Open the output file
-    sprintf(fileName, "%shex6%02d.hxs", SavePath, gamemap);
+    snprintf(fileName, sizeof(fileName), "%shex6%02d.hxs", SavePath, gamemap);
     OpenStreamOut(fileName);
 
     // Place a header marker
@@ -2048,7 +2048,7 @@
     }
 
     // Create the name
-    sprintf(fileName, "%shex6.hxs", SavePath);
+    snprintf(fileName, sizeof(fileName), "%shex6.hxs", SavePath);
 
     // Load the file
     M_ReadFile(fileName, &SaveBuffer);
@@ -2192,7 +2192,7 @@
     TargetPlayerAddrs = NULL;
 
     gamemap = map;
-    sprintf(fileName, "%shex6%02d.hxs", SavePath, gamemap);
+    snprintf(fileName, sizeof(fileName), "%shex6%02d.hxs", SavePath, gamemap);
     if (!deathmatch && ExistingFile(fileName))
     {                           // Unarchive map
         SV_LoadMap();
@@ -2342,7 +2342,7 @@
 {
     char fileName[100];
 
-    sprintf(fileName, "%shex%d.hxs", SavePath, REBORN_SLOT);
+    snprintf(fileName, sizeof(fileName), "%shex%d.hxs", SavePath, REBORN_SLOT);
     return ExistingFile(fileName);
 }
 
@@ -2363,7 +2363,7 @@
     RemoveAllThinkers();
 
     // Create the name
-    sprintf(fileName, "%shex6%02d.hxs", SavePath, gamemap);
+    snprintf(fileName, sizeof(fileName), "%shex6%02d.hxs", SavePath, gamemap);
 
     // Load the file
     M_ReadFile(fileName, &SaveBuffer);
@@ -3204,10 +3204,11 @@
 
     for (i = 0; i < MAX_MAPS; i++)
     {
-        sprintf(fileName, "%shex%d%02d.hxs", SavePath, slot, i);
+        snprintf(fileName, sizeof(fileName),
+                 "%shex%d%02d.hxs", SavePath, slot, i);
         remove(fileName);
     }
-    sprintf(fileName, "%shex%d.hxs", SavePath, slot);
+    snprintf(fileName, sizeof(fileName), "%shex%d.hxs", SavePath, slot);
     remove(fileName);
 }
 
@@ -3227,17 +3228,21 @@
 
     for (i = 0; i < MAX_MAPS; i++)
     {
-        sprintf(sourceName, "%shex%d%02d.hxs", SavePath, sourceSlot, i);
+        snprintf(sourceName, sizeof(sourceName),
+                 "%shex%d%02d.hxs", SavePath, sourceSlot, i);
         if (ExistingFile(sourceName))
         {
-            sprintf(destName, "%shex%d%02d.hxs", SavePath, destSlot, i);
+            snprintf(destName, sizeof(destName),
+                     "%shex%d%02d.hxs", SavePath, destSlot, i);
             CopyFile(sourceName, destName);
         }
     }
-    sprintf(sourceName, "%shex%d.hxs", SavePath, sourceSlot);
+    snprintf(sourceName, sizeof(sourceName),
+             "%shex%d.hxs", SavePath, sourceSlot);
     if (ExistingFile(sourceName))
     {
-        sprintf(destName, "%shex%d.hxs", SavePath, destSlot);
+        snprintf(destName, sizeof(destName),
+                 "%shex%d.hxs", SavePath, destSlot);
         CopyFile(sourceName, destName);
     }
 }