From 37ff2d903fd6d758b19ca3d68bc42fbbd648b250 Mon Sep 17 00:00:00 2001 From: Philip Rideout Date: Tue, 4 Jun 2019 08:17:00 -0700 Subject: [PATCH] Additional validation in VertexBuffer::Builder::build. If a client asks for more than 8 buffers in a VertexBuffer, they will either crash (release) or hit an assert in OpenGLDriver (debug). It's better to catch this earlier. This was noticed while investigating #1256. --- filament/src/VertexBuffer.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/filament/src/VertexBuffer.cpp b/filament/src/VertexBuffer.cpp index de3d600a00..9e68c84115 100644 --- a/filament/src/VertexBuffer.cpp +++ b/filament/src/VertexBuffer.cpp @@ -124,6 +124,10 @@ VertexBuffer* VertexBuffer::Builder::build(Engine& engine) { if (!ASSERT_PRECONDITION_NON_FATAL(mImpl->mBufferCount > 0, "bufferCount cannot be 0")) { return nullptr; } + if (!ASSERT_PRECONDITION_NON_FATAL(mImpl->mBufferCount <= MAX_ATTRIBUTE_BUFFER_COUNT, + "bufferCount cannot be more than %d", MAX_ATTRIBUTE_BUFFER_COUNT)) { + return nullptr; + } return upcast(engine).createVertexBuffer(*this); }