Skip to content

Commit e01c447

Browse files
committed
#4581 Crash on LL::GLTF::copy
Tried to initialize LLVector2 TexCoords with vector3 data?
1 parent a27acaf commit e01c447

File tree

1 file changed

+13
-1
lines changed

1 file changed

+13
-1
lines changed

indra/newview/gltf/buffer_util.h

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,12 @@ namespace LL
146146
dst.set(src[0], src[1]);
147147
}
148148

149+
template<>
150+
inline void copyVec3<F32, LLVector2>(F32* src, LLVector2& dst)
151+
{
152+
dst.set(src[0], src[1]);
153+
}
154+
149155
template<>
150156
inline void copyVec3<F32, vec3>(F32* src, vec3& dst)
151157
{
@@ -375,12 +381,18 @@ namespace LL
375381
template<class T>
376382
inline void copy(Asset& asset, Accessor& accessor, LLStrider<T>& dst)
377383
{
378-
if (accessor.mBufferView == INVALID_INDEX)
384+
if (accessor.mBufferView == INVALID_INDEX
385+
|| accessor.mBufferView >= asset.mBufferViews.size())
379386
{
380387
LL_WARNS("GLTF") << "Invalid buffer" << LL_ENDL;
381388
return;
382389
}
383390
const BufferView& bufferView = asset.mBufferViews[accessor.mBufferView];
391+
if (bufferView.mBuffer >= asset.mBuffers.size())
392+
{
393+
LL_WARNS("GLTF") << "Invalid buffer view" << LL_ENDL;
394+
return;
395+
}
384396
const Buffer& buffer = asset.mBuffers[bufferView.mBuffer];
385397
const U8* src = buffer.mData.data() + bufferView.mByteOffset + accessor.mByteOffset;
386398

0 commit comments

Comments
 (0)