From 2b8725c2e537ba0c5606dd34967928db760d865e Mon Sep 17 00:00:00 2001 From: Tony Barbour Date: Wed, 10 May 2017 11:14:03 -0600 Subject: layers: Validate pOffsets in vkCmdBindVertexBuffers Change-Id: Ie618d7657af6eca555050507a623be02af2e21fe --- layers/core_validation.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'layers/core_validation.cpp') diff --git a/layers/core_validation.cpp b/layers/core_validation.cpp index 2ce055d2..50030c94 100644 --- a/layers/core_validation.cpp +++ b/layers/core_validation.cpp @@ -7068,6 +7068,12 @@ VKAPI_ATTR void VKAPI_CALL CmdBindVertexBuffers(VkCommandBuffer commandBuffer, u return ValidateBufferMemoryIsValid(dev_data, buffer_state, "vkCmdBindVertexBuffers()"); }; cb_node->validate_functions.push_back(function); + if (pOffsets[i] >= buffer_state->createInfo.size) { + skip |= log_msg(dev_data->report_data, VK_DEBUG_REPORT_ERROR_BIT_EXT, VK_DEBUG_REPORT_OBJECT_TYPE_BUFFER_EXT, + reinterpret_cast(buffer_state->buffer), __LINE__, VALIDATION_ERROR_01417, "DS", + "vkCmdBindVertexBuffers() offset (0x%" PRIxLEAST64 ") is beyond the end of the buffer. %s", + pOffsets[i], validation_error_map[VALIDATION_ERROR_01417]); + } } UpdateCmdBufferLastCmd(cb_node, CMD_BINDVERTEXBUFFER); updateResourceTracking(cb_node, firstBinding, bindingCount, pBuffers); -- cgit v1.2.3