mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-12 21:10:42 +00:00
Fix overrunning vector bounds if vertex attributes use high locations
This commit is contained in:
@@ -1222,7 +1222,7 @@ void VulkanReplay::InitPostVSBuffers(uint32_t eventId)
|
||||
};
|
||||
|
||||
std::vector<bool> attrIsInstanced;
|
||||
std::vector<CompactedAttrBuffer> vbuffers;
|
||||
CompactedAttrBuffer vbuffers[64] = {};
|
||||
|
||||
{
|
||||
VkWriteDescriptorSet descWrites[64];
|
||||
@@ -1260,12 +1260,18 @@ void VulkanReplay::InitPostVSBuffers(uint32_t eventId)
|
||||
GetBufferData(state.vbuffers[vb].buf, offs, len, origVBs[vb]);
|
||||
}
|
||||
|
||||
vbuffers.resize(vi->vertexAttributeDescriptionCount);
|
||||
for(uint32_t i = 0; i < vi->vertexAttributeDescriptionCount; i++)
|
||||
{
|
||||
const VkVertexInputAttributeDescription &attrDesc = vi->pVertexAttributeDescriptions[i];
|
||||
uint32_t attr = attrDesc.location;
|
||||
|
||||
RDCASSERT(attr < 64);
|
||||
if(attr >= ARRAY_COUNT(vbuffers))
|
||||
{
|
||||
RDCERR("Attribute index too high! Resize array.");
|
||||
continue;
|
||||
}
|
||||
|
||||
bool isInstanced = false;
|
||||
size_t stride = 1;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user