[PATCH] check for array index overflows
Marcus Meissner
marcus at jet.franken.de
Mon Jan 14 16:04:21 CST 2008
Hi,
This checks for overflowing the fixed size arrays.
spotted by Coverity.
(Submitted some months ago already, but left in my queue.)
Ciao, Marcus
---
dlls/wined3d/device.c | 12 ++++++++++++
1 files changed, 12 insertions(+), 0 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 84cbe89..09bc654 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -3178,6 +3178,9 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetSamplerState(IWineD3DDevice *iface,
Sampler -= (WINED3DVERTEXTEXTURESAMPLER0 - MAX_FRAGMENT_SAMPLERS);
}
+ if (Sampler >= sizeof(This->stateBlock->samplerState)/sizeof(This->stateBlock->samplerState[0]))
+ return E_FAIL;
+
/**
* SetSampler is designed to allow for more than the standard up to 8 textures
* and Geforce has stopped supporting more than 6 standard textures in openGL.
@@ -3223,6 +3226,9 @@ static HRESULT WINAPI IWineD3DDeviceImpl_GetSamplerState(IWineD3DDevice *iface,
Sampler -= (WINED3DVERTEXTEXTURESAMPLER0 - MAX_FRAGMENT_SAMPLERS);
}
+ if (Sampler >= sizeof(This->stateBlock->samplerState)/sizeof(This->stateBlock->samplerState[0]))
+ return E_FAIL;
+
*Value = This->stateBlock->samplerState[Sampler][Type];
TRACE("(%p) : Returning %#x\n", This, *Value);
@@ -4398,6 +4404,9 @@ static HRESULT WINAPI IWineD3DDeviceImpl_SetTexture(IWineD3DDevice *iface, DWORD
Stage -= (WINED3DVERTEXTEXTURESAMPLER0 - MAX_FRAGMENT_SAMPLERS);
}
+ if (Stage >= sizeof(This->stateBlock->textures)/sizeof(This->stateBlock->textures[0]))
+ return E_FAIL;
+
oldTexture = This->updateStateBlock->textures[Stage];
if(pTexture != NULL) {
@@ -4490,6 +4499,9 @@ static HRESULT WINAPI IWineD3DDeviceImpl_GetTexture(IWineD3DDevice *iface, DWORD
Stage -= (WINED3DVERTEXTEXTURESAMPLER0 - MAX_FRAGMENT_SAMPLERS);
}
+ if (Stage >= sizeof(This->stateBlock->textures)/sizeof(This->stateBlock->textures[0]))
+ return E_FAIL;
+
*ppTexture=This->stateBlock->textures[Stage];
if (*ppTexture)
IWineD3DBaseTexture_AddRef(*ppTexture);
--
1.5.2.4
More information about the wine-patches
mailing list