@@ -148,9 +148,12 @@ int HModelDefClass::Load_W3D(ChunkLoadClass & cload)
148148 /*
149149 ** process the header info
150150 */
151- strlcpy (ModelName,header.Name ,W3D_NAME_LEN);
152- strlcpy (BasePoseName,header.HierarchyName ,W3D_NAME_LEN);
153- strlcpy (Name, ModelName, ARRAY_SIZE (Name));
151+ static_assert (ARRAY_SIZE (ModelName) >= ARRAY_SIZE (header.Name ), " Incorrect array size" );
152+ static_assert (ARRAY_SIZE (BasePoseName) >= ARRAY_SIZE (header.HierarchyName ), " Incorrect array size" );
153+ static_assert (ARRAY_SIZE (Name) >= ARRAY_SIZE (ModelName), " Incorrect array size" );
154+ strcpy (ModelName,header.Name );
155+ strcpy (BasePoseName,header.HierarchyName );
156+ strcpy (Name, ModelName);
154157
155158 /*
156159 ** Just allocate a node for the number of sub objects we're expecting
@@ -232,7 +235,8 @@ bool HModelDefClass::read_connection(ChunkLoadClass & cload,HmdlNodeDefStruct *
232235 return false ;
233236 }
234237
235- strlcpy (node->RenderObjName , ModelName, ARRAY_SIZE (node->RenderObjName ));
238+ static_assert (ARRAY_SIZE (node->RenderObjName ) >= ARRAY_SIZE (ModelName), " Incorrect array size" );
239+ strcpy (node->RenderObjName , ModelName);
236240 strlcat (node->RenderObjName , " ." , ARRAY_SIZE (node->RenderObjName ));
237241 strlcat (node->RenderObjName , con.RenderObjName , ARRAY_SIZE (node->RenderObjName ));
238242
0 commit comments