diff options
-rw-r--r-- | driver.c | 8 | ||||
-rw-r--r-- | driver.h | 2 | ||||
-rw-r--r-- | fileio.c | 4 | ||||
-rw-r--r-- | gfxinit.c | 2 | ||||
-rw-r--r-- | map.c | 2 | ||||
-rw-r--r-- | network_client.c | 2 | ||||
-rw-r--r-- | network_server.c | 2 | ||||
-rw-r--r-- | openttd.c | 19 |
8 files changed, 21 insertions, 20 deletions
@@ -206,18 +206,18 @@ int GetDriverParamInt(const char* const* parm, const char* name, int def) } -char *GetDriverList(char* p) +char *GetDriverList(char* p, const char *last) { const DriverClass* dc; for (dc = _driver_classes; dc != endof(_driver_classes); dc++) { const DriverDesc* dd; - p += sprintf(p, "List of %s drivers:\n", dc->name); + p += snprintf(p, last - p, "List of %s drivers:\n", dc->name); for (dd = dc->descs; dd->name != NULL; dd++) { - p += sprintf(p, "%10s: %s\n", dd->name, dd->longname); + p += snprintf(p, last - p, "%10s: %s\n", dd->name, dd->longname); } - p += sprintf(p, "\n"); + p = strecpy(p, "\n", last); } return p; @@ -8,6 +8,6 @@ void LoadDriver(int driver, const char *name); bool GetDriverParamBool(const char* const* parm, const char* name); int GetDriverParamInt(const char* const* parm, const char* name, int def); -char *GetDriverList(char* p); +char *GetDriverList(char *p, const char *last); #endif /* DRIVER_H */ @@ -117,7 +117,7 @@ FILE *FioFOpenFile(const char *filename) FILE *f; char buf[MAX_PATH]; - sprintf(buf, "%s%s", _path.data_dir, filename); + snprintf(buf, lengthof(buf), "%s%s", _path.data_dir, filename); f = fopen(buf, "rb"); #if !defined(WIN32) @@ -128,7 +128,7 @@ FILE *FioFOpenFile(const char *filename) #if defined SECOND_DATA_DIR // tries in the 2nd data directory if (f == NULL) { - sprintf(buf, "%s%s", _path.second_data_dir, filename); + snprintf(buf, lengthof(buf), "%s%s", _path.second_data_dir, filename); strtolower(buf + strlen(_path.second_data_dir) - 1); f = fopen(buf, "rb"); } @@ -111,7 +111,7 @@ static bool FileMD5(const MD5File file, bool warn) char buf[MAX_PATH]; // open file - sprintf(buf, "%s%s", _path.data_dir, file.filename); + snprintf(buf, lengthof(buf), "%s%s", _path.data_dir, file.filename); f = fopen(buf, "rb"); #if !defined(WIN32) @@ -67,7 +67,7 @@ TileIndex TileAdd(TileIndex tile, TileIndexDiff add, if (x >= MapSizeX() || y >= MapSizeY()) { char buf[512]; - sprintf(buf, "TILE_ADD(%s) when adding 0x%.4X and 0x%.4X failed", + snprintf(buf, lengthof(buf), "TILE_ADD(%s) when adding 0x%.4X and 0x%.4X failed", exp, tile, add); #if !defined(_MSC_VER) fprintf(stderr, "%s:%d %s\n", file, line, buf); diff --git a/network_client.c b/network_client.c index d8265771c..881dc1cbc 100644 --- a/network_client.c +++ b/network_client.c @@ -457,7 +457,7 @@ DEF_CLIENT_RECEIVE_COMMAND(PACKET_SERVER_MAP) // First packet, init some stuff if (maptype == MAP_PACKET_START) { // The name for the temp-map - sprintf(filename, "%s%snetwork_client.tmp", _path.autosave_dir, PATHSEP); + snprintf(filename, lengthof(filename), "%s%snetwork_client.tmp", _path.autosave_dir, PATHSEP); file_pointer = fopen(filename, "wb"); if (file_pointer == NULL) { diff --git a/network_server.c b/network_server.c index 94e50286f..32050672e 100644 --- a/network_server.c +++ b/network_server.c @@ -281,7 +281,7 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_MAP) Packet *p; // Make a dump of the current game - sprintf(filename, "%s%snetwork_server.tmp", _path.autosave_dir, PATHSEP); + snprintf(filename, lengthof(filename), "%s%snetwork_server.tmp", _path.autosave_dir, PATHSEP); if (SaveOrLoad(filename, SL_SAVE) != SL_OK) error("network savedump failed"); file_pointer = fopen(filename, "rb"); @@ -78,7 +78,7 @@ void CDECL error(const char *s, ...) char buf[512]; va_start(va, s); - vsprintf(buf, s, va); + vsnprintf(buf, lengthof(buf), s, va); va_end(va); ShowOSErrorBox(buf); @@ -93,7 +93,7 @@ void CDECL ShowInfoF(const char *str, ...) va_list va; char buf[1024]; va_start(va, str); - vsprintf(buf, str, va); + vsnprintf(buf, lengthof(buf), str, va); va_end(va); ShowInfo(buf); } @@ -132,10 +132,10 @@ static void showhelp(void) extern const char _openttd_revision[]; char buf[4096], *p; - p = buf; + p = buf; - p += sprintf(p, "OpenTTD %s\n", _openttd_revision); - p += sprintf(p, + p += snprintf(p, lengthof(buf), "OpenTTD %s\n", _openttd_revision); + p = strecpy(p, "\n" "\n" "Command line options:\n" @@ -157,10 +157,11 @@ static void showhelp(void) " -i = Force to use the DOS palette\n" " (use this if you see a lot of pink)\n" " -c config_file = Use 'config_file' instead of 'openttd.cfg'\n" - "\n" + "\n", + lastof(buf) ); - p = GetDriverList(p); + p = GetDriverList(p, lastof(buf)); ShowInfo(buf); } @@ -286,10 +287,10 @@ static void LoadIntroGame(void) SetupColorsAndInitialWindow(); // Generate a world. - sprintf(filename, "%sopntitle.dat", _path.data_dir); + snprintf(filename, lengthof(filename), "%sopntitle.dat", _path.data_dir); #if defined SECOND_DATA_DIR if (SaveOrLoad(filename, SL_LOAD) != SL_OK) { - sprintf(filename, "%sopntitle.dat", _path.second_data_dir); + snprintf(filename, lengthof(filename), "%sopntitle.dat", _path.second_data_dir); } #endif if (SaveOrLoad(filename, SL_LOAD) != SL_OK) { |