From e01c4477450857be7b20ffd7db402738fad31946 Mon Sep 17 00:00:00 2001 From: Andrey Kleshchev Date: Wed, 20 Aug 2025 20:54:28 +0300 Subject: #4581 Crash on LL::GLTF::copy Tried to initialize LLVector2 TexCoords with vector3 data? --- indra/newview/gltf/buffer_util.h | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'indra/newview/gltf/buffer_util.h') diff --git a/indra/newview/gltf/buffer_util.h b/indra/newview/gltf/buffer_util.h index be36c5e90b..c231443a9e 100644 --- a/indra/newview/gltf/buffer_util.h +++ b/indra/newview/gltf/buffer_util.h @@ -146,6 +146,12 @@ namespace LL dst.set(src[0], src[1]); } + template<> + inline void copyVec3(F32* src, LLVector2& dst) + { + dst.set(src[0], src[1]); + } + template<> inline void copyVec3(F32* src, vec3& dst) { @@ -375,12 +381,18 @@ namespace LL template inline void copy(Asset& asset, Accessor& accessor, LLStrider& dst) { - if (accessor.mBufferView == INVALID_INDEX) + if (accessor.mBufferView == INVALID_INDEX + || accessor.mBufferView >= asset.mBufferViews.size()) { LL_WARNS("GLTF") << "Invalid buffer" << LL_ENDL; return; } const BufferView& bufferView = asset.mBufferViews[accessor.mBufferView]; + if (bufferView.mBuffer >= asset.mBuffers.size()) + { + LL_WARNS("GLTF") << "Invalid buffer view" << LL_ENDL; + return; + } const Buffer& buffer = asset.mBuffers[bufferView.mBuffer]; const U8* src = buffer.mData.data() + bufferView.mByteOffset + accessor.mByteOffset; -- cgit v1.2.3