diff options
| author | Tobin Ehlis <tobin@lunarg.com> | 2015-02-25 16:34:54 -0700 |
|---|---|---|
| committer | Tobin Ehlis <tobin@lunarg.com> | 2015-02-25 16:34:54 -0700 |
| commit | 99796388db25dbe159e4306e63ad547aeeed0ee1 (patch) | |
| tree | 7f9598c7dba64d1bad8978a45bafb449a4365657 | |
| parent | 4b1eaba8bc001a7c9faa097ff7782ce9fadeaf02 (diff) | |
| download | usermoji-99796388db25dbe159e4306e63ad547aeeed0ee1.tar.xz | |
layers: Fix DrawState buffer over-run when clearing descriptors
| -rw-r--r-- | layers/draw_state.c | 3 |
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; |
