fix some strncpy use
authorGarux <garux@mail.ru>
Sat, 29 Sep 2018 18:34:03 +0000 (21:34 +0300)
committerThomas Debesse <dev@illwieckz.net>
Tue, 27 Apr 2021 01:45:03 +0000 (03:45 +0200)
Note by illwieckz: partial cherry-pick, vfsListShaderFiles is missing upstream

libs/picomodel/pm_3ds.c
libs/picomodel/pm_ase.c
libs/picomodel/pm_fm.c
libs/picomodel/pm_lwo.c
libs/picomodel/pm_md2.c
plugins/md3model/md2.cpp

index c6ac1531eb8b656e7c8592ed7c23339cd82282a0..c27644b247f999f3b514de34b11c42825c6ebb08 100644 (file)
@@ -722,8 +722,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) */
index 1244eb353d4417569ceac257f0680e4c94130d47..101a7d2d23413cc11c84ffc19fc41fd6109111aa 100644 (file)
@@ -511,7 +511,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 )
@@ -540,7 +540,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" ) ) {
index 79fff8b991b42a7eb55c03e9578d86c7e1f39315..a4b8a11bd71a0bdec84336b0fc89ecc2aec04166 100644 (file)
@@ -198,7 +198,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;
index 37f2b60b1c602ed0b258dfac290a50648995ca95..6431dc2b2e236f5396c585a4f0605e518d599e09 100644 (file)
@@ -100,7 +100,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;
@@ -231,7 +232,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 );
index c984e42ebef2436e68f71501a43c7daca9e4dcf0..31c8a8ff5039927c492d9c4c6727e3537808563b 100644 (file)
@@ -326,7 +326,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;
index e18ef2f6ca68016edf5dccd31f2fda6eb57caaef..bb481bed3817fc8726d95df14d957be7fc1f3eeb 100644 (file)
@@ -233,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<byte*>( skinnameRelative ), MD2_MAX_SKINNAME );