From f99cf57f27d1dc01719b56f82a6200e788902845 Mon Sep 17 00:00:00 2001 From: Garux Date: Sat, 29 Sep 2018 21:34:03 +0300 Subject: [PATCH] fix some strncpy use --- libs/picomodel/pm_3ds.c | 4 ++-- libs/picomodel/pm_ase.c | 4 ++-- libs/picomodel/pm_fm.c | 3 ++- libs/picomodel/pm_lwo.c | 5 +++-- libs/picomodel/pm_md2.c | 3 ++- plugins/md3model/md2.cpp | 4 ++-- tools/quake3/common/vfs.c | 3 +-- 7 files changed, 14 insertions(+), 12 deletions(-) diff --git a/libs/picomodel/pm_3ds.c b/libs/picomodel/pm_3ds.c index bce0bde3..63a46c64 100644 --- a/libs/picomodel/pm_3ds.c +++ b/libs/picomodel/pm_3ds.c @@ -728,8 +728,8 @@ static picoModel_t *_3ds_load( PM_PARAMS_LOAD ){ return NULL; } /* get model's base name (eg. jeep from c:\models\jeep.3ds) */ - memset( basename,0,sizeof( basename ) ); - strncpy( basename,_pico_nopath( fileName ),sizeof( basename ) ); + memset( basename, 0, sizeof( basename ) ); + strncpy( basename, _pico_nopath( fileName ), sizeof( basename ) - 1 ); _pico_setfext( basename, NULL ); /* initialize persistant vars (formerly static) */ diff --git a/libs/picomodel/pm_ase.c b/libs/picomodel/pm_ase.c index cf56ff4c..45249cf3 100644 --- a/libs/picomodel/pm_ase.c +++ b/libs/picomodel/pm_ase.c @@ -515,7 +515,7 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD ){ PicoSetModelFileName( model, fileName ); /* initialize some stuff */ - memset( lastNodeName,0,sizeof( lastNodeName ) ); + memset( lastNodeName, 0, sizeof( lastNodeName ) ); /* parse ase model file */ while ( 1 ) @@ -544,7 +544,7 @@ static picoModel_t *_ase_load( PM_PARAMS_LOAD ){ } /* remember node name */ - strncpy( lastNodeName,ptr,sizeof( lastNodeName ) ); + strncpy( lastNodeName, ptr, sizeof( lastNodeName ) - 1 ); } /* model mesh (originally contained within geomobject) */ else if ( !_pico_stricmp( p->token,"*mesh" ) ) { diff --git a/libs/picomodel/pm_fm.c b/libs/picomodel/pm_fm.c index 7a9d20f3..389b970d 100644 --- a/libs/picomodel/pm_fm.c +++ b/libs/picomodel/pm_fm.c @@ -201,7 +201,8 @@ static picoModel_t *_fm_load( PM_PARAMS_LOAD ){ fm_vert_normal_t *vert; - char skinname[FM_SKINPATHSIZE]; + char skinname[FM_SKINPATHSIZE + 1]; + skinname[FM_SKINPATHSIZE] = '\0'; fm_t fm; fm_header_t *fm_head; fm_st_t *texCoord; diff --git a/libs/picomodel/pm_lwo.c b/libs/picomodel/pm_lwo.c index e7b3b167..424ae79b 100644 --- a/libs/picomodel/pm_lwo.c +++ b/libs/picomodel/pm_lwo.c @@ -103,7 +103,8 @@ static picoModel_t *_lwo_load( PM_PARAMS_LOAD ){ lwPolygon *pol; lwPolVert *v; lwVMapPt *vm; - char name[ 256 ]; + char name[256]; + name[255] = '\0'; int i, j, k, numverts; picoModel_t *picoModel; @@ -234,7 +235,7 @@ static picoModel_t *_lwo_load( PM_PARAMS_LOAD ){ } /* detox and set shader name */ - strncpy( name, surface->name, sizeof( name ) ); + strncpy( name, surface->name, sizeof( name ) - 1 ); _pico_first_token( name ); _pico_setfext( name, NULL ); _pico_unixify( name ); diff --git a/libs/picomodel/pm_md2.c b/libs/picomodel/pm_md2.c index c77c2f6d..8ab6fb88 100644 --- a/libs/picomodel/pm_md2.c +++ b/libs/picomodel/pm_md2.c @@ -334,7 +334,8 @@ static picoModel_t *_md2_load( PM_PARAMS_LOAD ){ index_DUP_LUT_t *p_index_LUT_DUPS; md2Triangle_t *p_md2Triangle; - char skinname[ MD2_MAX_SKINNAME ]; + char skinname[ MD2_MAX_SKINNAME + 1 ]; + skinname[ MD2_MAX_SKINNAME] = '\0'; md2_t *md2; md2St_t *texCoord; md2Frame_t *frame; diff --git a/plugins/md3model/md2.cpp b/plugins/md3model/md2.cpp index 56a18ddc..d1bf9648 100644 --- a/plugins/md3model/md2.cpp +++ b/plugins/md3model/md2.cpp @@ -41,7 +41,6 @@ typedef unsigned char byte; ======================================================================== */ #define MD2_NUMVERTEXNORMALS 162 -#define MD2_MAX_SKINNAME 64 const unsigned char MD2_IDENT[4] = { 'I', 'D', 'P', '2', }; #define MD2_VERSION 8 @@ -234,7 +233,8 @@ void MD2Surface_read( Model& model, const byte* buffer, ArchiveFile& file ){ char skinname[MD2_MAX_SKINNAME]; char skinnameRelative[MD2_MAX_SKINNAME]; - char path[MD2_MAX_SKINNAME]; + char path[MD2_MAX_SKINNAME + 1]; + path[MD2_MAX_SKINNAME] = '\0'; int i = MD2_MAX_SKINNAME; PointerInputStream inputStream( buffer + header.ofs_skins ); inputStream.read( reinterpret_cast( skinnameRelative ), MD2_MAX_SKINNAME ); diff --git a/tools/quake3/common/vfs.c b/tools/quake3/common/vfs.c index 2cafd3f0..4ce49263 100644 --- a/tools/quake3/common/vfs.c +++ b/tools/quake3/common/vfs.c @@ -260,8 +260,7 @@ void vfsListShaderFiles( char* list, int *num ){ char path[NAME_MAX]; /* search in dirs */ for ( i = 0; i < g_numDirs; i++ ){ - strncpy( path, g_strDirs[ i ], NAME_MAX ); - strcat( path, "scripts/" ); + snprintf( path, NAME_MAX, "%sscripts/", g_strDirs[ i ] ); dir = g_dir_open( path, 0, NULL );