diff --git a/doomclassic/doom/st_stuff.cpp b/doomclassic/doom/st_stuff.cpp index 481ec82..baeaf01 100644 --- a/doomclassic/doom/st_stuff.cpp +++ b/doomclassic/doom/st_stuff.cpp @@ -968,7 +968,7 @@ void ST_loadGraphics(void) int j; int facenum; - char namebuf[9]; + char namebuf[11]; // Load the numbers, tall and short for (i=0;i<10;i++) diff --git a/doomclassic/doom/wi_stuff.cpp b/doomclassic/doom/wi_stuff.cpp index 47837cf..cec5156 100644 --- a/doomclassic/doom/wi_stuff.cpp +++ b/doomclassic/doom/wi_stuff.cpp @@ -1503,16 +1503,17 @@ void WI_loadData(void) { int i; int j; - char name[9]; + char name[20]; anim_t* a; - if (::g->gamemode == commercial) + if (::g->gamemode == commercial) { strcpy(name, "INTERPIC"); // DHM - Nerve :: Use our background image //strcpy(name, "DMENUPIC"); - else - sprintf(name, "WIMAP%d", ::g->wbs->epsd); - + } else { + snprintf(name, 20, "WIMAP%d", ::g->wbs->epsd); + name[19] = 0; + } if ( ::g->gamemode == retail ) { if (::g->wbs->epsd == 3) @@ -1542,7 +1543,8 @@ void WI_loadData(void) ::g->lnames = (patch_t **) DoomLib::Z_Malloc(sizeof(patch_t*) * ::g->NUMCMAPS, PU_LEVEL_SHARED, 0); for (i=0 ; i < ::g->NUMCMAPS ; i++) { - sprintf(name, "CWILV%2.2d", i); + snprintf(name, 20, "CWILV%2.2d", i); + name[19] = 0; ::g->lnames[i] = (patch_t*)W_CacheLumpName(name, PU_LEVEL_SHARED); } } @@ -1551,7 +1553,8 @@ void WI_loadData(void) ::g->lnames = (patch_t **) DoomLib::Z_Malloc(sizeof(patch_t*) * ( NUMMAPS ), PU_LEVEL_SHARED, 0); for (i=0 ; iwbs->epsd, i); + snprintf(name, 20, "WILV%d%d", ::g->wbs->epsd, i); + name[19] = 0; ::g->lnames[i] = (patch_t*)W_CacheLumpName(name, PU_LEVEL_SHARED); } @@ -1575,7 +1578,8 @@ void WI_loadData(void) if (::g->wbs->epsd != 1 || j != 8) { // animations - sprintf(name, "WIA%d%.2d%.2d", ::g->wbs->epsd, j, i); + snprintf(name, 20, "WIA%d%.2d%.2d", ::g->wbs->epsd, j, i); + name[19] = 0; a->p[i] = (patch_t*)W_CacheLumpName(name, PU_LEVEL_SHARED); } else @@ -1594,7 +1598,7 @@ void WI_loadData(void) for (i=0;i<10;i++) { // numbers 0-9 - sprintf(name, "WINUM%d", i); + snprintf(name, 10, "WINUM%d", i); name[9] = 0; ::g->num[i] = (patch_t*)W_CacheLumpName(name, PU_LEVEL_SHARED); } @@ -1651,11 +1655,11 @@ void WI_loadData(void) for (i=0 ; iwistuff_p[i] = (patch_t*)W_CacheLumpName(name, PU_LEVEL_SHARED); // "1,2,3,4" - sprintf(name, "WIBP%d", i+1); + snprintf(name, 10, "WIBP%d", i+1); name[9] = 0; ::g->wistuff_bp[i] = (patch_t*)W_CacheLumpName(name, PU_LEVEL_SHARED); } diff --git a/neo/d3xp/MultiplayerGame.cpp b/neo/d3xp/MultiplayerGame.cpp index a14c6da..4780f95 100644 --- a/neo/d3xp/MultiplayerGame.cpp +++ b/neo/d3xp/MultiplayerGame.cpp @@ -631,7 +631,8 @@ idMultiplayerGame::GameTime const char* idMultiplayerGame::GameTime() { static char buff[16]; - int m, s, t, ms; + unsigned int m, s, t; + int ms; if( gameState == COUNTDOWN ) { @@ -653,7 +654,9 @@ const char* idMultiplayerGame::GameTime() } else { - sprintf( buff, "WMP %i", s ); + snprintf( buff, 16, "WMP %i", s ); + buff[15] = 0; + } } else @@ -678,7 +681,8 @@ const char* idMultiplayerGame::GameTime() t = s / 10; s -= t * 10; - sprintf( buff, "%i:%i%i", m, t, s ); + snprintf( buff, 16, "%i:%i%i", m, t, s ); + buff[15] = 0; } return &buff[0]; } diff --git a/neo/idlib/StrStatic.h b/neo/idlib/StrStatic.h index 4fdb52d..63c930f 100644 --- a/neo/idlib/StrStatic.h +++ b/neo/idlib/StrStatic.h @@ -97,7 +97,7 @@ public: { buffer[ 0 ] = '\0'; SetStaticBuffer( buffer, _size_ ); - idStr::operator=( b ); + idStr::operator=( idStr(b) ); } ID_INLINE explicit idStrStatic( const char c ) : @@ -105,7 +105,7 @@ public: { buffer[ 0 ] = '\0'; SetStaticBuffer( buffer, _size_ ); - idStr::operator=( c ); + idStr::operator=( idStr(c) ); } ID_INLINE explicit idStrStatic( const int i ) : @@ -113,7 +113,7 @@ public: { buffer[ 0 ] = '\0'; SetStaticBuffer( buffer, _size_ ); - idStr::operator=( i ); + idStr::operator=( idStr(i) ); } ID_INLINE explicit idStrStatic( const unsigned u ) : @@ -121,7 +121,7 @@ public: { buffer[ 0 ] = '\0'; SetStaticBuffer( buffer, _size_ ); - idStr::operator=( u ); + idStr::operator=( idStr(u) ); } ID_INLINE explicit idStrStatic( const float f ) : @@ -129,7 +129,7 @@ public: { buffer[ 0 ] = '\0'; SetStaticBuffer( buffer, _size_ ); - idStr::operator=( f ); + idStr::operator=( idStr(f) ); } private: diff --git a/neo/tools/compilers/dmap/dmap.cpp b/neo/tools/compilers/dmap/dmap.cpp index 655e881..03c5831 100644 --- a/neo/tools/compilers/dmap/dmap.cpp +++ b/neo/tools/compilers/dmap/dmap.cpp @@ -34,6 +34,10 @@ If you have questions concerning this license or the applicable additional terms dmapGlobals_t dmapGlobals; +#ifndef PATH_MAX +#define PATH_MAX 4096 +#endif + /* ============ ProcessModel @@ -243,7 +247,7 @@ void Dmap( const idCmdArgs& args ) { int i; int start, end; - char path[1024]; + char path[PATH_MAX]; idStr passedName; bool leaked = false; bool noCM = false; @@ -390,7 +394,8 @@ void Dmap( const idCmdArgs& args ) // if this isn't a regioned map, delete the last saved region map if( passedName.Right( 4 ) != ".reg" ) { - sprintf( path, "%s.reg", dmapGlobals.mapFileBase ); + snprintf( path, PATH_MAX, "%s.reg", dmapGlobals.mapFileBase ); + path[PATH_MAX-1] = 0; fileSystem->RemoveFile( path ); } else @@ -402,7 +407,8 @@ void Dmap( const idCmdArgs& args ) passedName = stripped; // delete any old line leak files - sprintf( path, "%s.lin", dmapGlobals.mapFileBase ); + snprintf( path, PATH_MAX, "%s.lin", dmapGlobals.mapFileBase ); + path[PATH_MAX-1] = 0; fileSystem->RemoveFile( path ); // delete any old generated binary proc files