From 46101abd7348cdf386f58321c9e372b0c56983fd Mon Sep 17 00:00:00 2001 From: Mnikolenko ProductEngine Date: Mon, 9 Feb 2015 12:17:44 +0200 Subject: MAINT-4863 FIXED Return LLModel::BAD_ELEMENT for model with empty or corrupted position array --- indra/llprimitive/lldaeloader.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/indra/llprimitive/lldaeloader.cpp b/indra/llprimitive/lldaeloader.cpp index 72de651eea..355826b428 100644 --- a/indra/llprimitive/lldaeloader.cpp +++ b/indra/llprimitive/lldaeloader.cpp @@ -169,6 +169,11 @@ LLModel::EModelStatus load_face_from_dom_triangles(std::vector& fa if (pos_source) { + if(!pos_source->getFloat_array() || (v.getCount() == 0)) + { + return LLModel::BAD_ELEMENT; + } + face.mExtents[0].set(v[0], v[1], v[2]); face.mExtents[1].set(v[0], v[1], v[2]); } @@ -2202,7 +2207,7 @@ bool LLDAELoader::addVolumeFacesFromDomMesh(LLModel* pModel,domMesh* mesh) domTrianglesRef& tri = tris.get(i); status = load_face_from_dom_triangles(pModel->getVolumeFaces(), pModel->getMaterialList(), tri); - + pModel->mStatus = status; if(status != LLModel::NO_ERRORS) { pModel->ClearFacesAndMaterials(); -- cgit v1.2.3