aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTobin Ehlis <tobin@lunarg.com>2015-02-25 16:34:54 -0700
committerTobin Ehlis <tobin@lunarg.com>2015-02-25 16:34:54 -0700
commit99796388db25dbe159e4306e63ad547aeeed0ee1 (patch)
tree7f9598c7dba64d1bad8978a45bafb449a4365657
parent4b1eaba8bc001a7c9faa097ff7782ce9fadeaf02 (diff)
downloadusermoji-99796388db25dbe159e4306e63ad547aeeed0ee1.tar.xz
layers: Fix DrawState buffer over-run when clearing descriptors
-rw-r--r--layers/draw_state.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/layers/draw_state.c b/layers/draw_state.c
index 7e6d15b2..0b7bfc78 100644
--- a/layers/draw_state.c
+++ b/layers/draw_state.c
@@ -936,6 +936,7 @@ static void dsUpdate(XGL_DESCRIPTOR_SET ds, GENERIC_HEADER* pUpdateChain)
pSet->pUpdateStructs = pNewNode;
// Now update appropriate descriptor(s) to point to new Update node
for (uint32_t i = getUpdateIndex(pUpdates); i < getUpdateUpperBound(pUpdates); i++) {
+ assert(i<pSet->descriptorCount);
pSet->ppDescriptors[i] = pNewNode;
}
}
@@ -954,7 +955,7 @@ static void freeShadowUpdateTree(SET_NODE* pSet)
pSet->pUpdateStructs = NULL;
GENERIC_HEADER* pFreeUpdate = pShadowUpdate;
// Clear the descriptor mappings as they will now be invalid
- memset(pSet->ppDescriptors, 0, pSet->descriptorCount*sizeof(GENERIC_HEADER));
+ memset(pSet->ppDescriptors, 0, pSet->descriptorCount*sizeof(GENERIC_HEADER*));
while(pShadowUpdate) {
pFreeUpdate = pShadowUpdate;
pShadowUpdate = (GENERIC_HEADER*)pShadowUpdate->pNext;