Module: wine Branch: master Commit: 14d8b51bacf2c46c27d79c87249efecf00f4eb39 URL: http://source.winehq.org/git/wine.git/?a=commit;h=14d8b51bacf2c46c27d79c8724...
Author: Rico Schüller kgbricola@web.de Date: Tue Feb 15 19:07:47 2011 +0100
d3dcompiler: Add argument check in D3DReflect().
---
dlls/d3dcompiler_43/d3dcompiler_43_main.c | 13 +++++++++++++ 1 files changed, 13 insertions(+), 0 deletions(-)
diff --git a/dlls/d3dcompiler_43/d3dcompiler_43_main.c b/dlls/d3dcompiler_43/d3dcompiler_43_main.c index 365b631..7e130fd 100644 --- a/dlls/d3dcompiler_43/d3dcompiler_43_main.c +++ b/dlls/d3dcompiler_43/d3dcompiler_43_main.c @@ -128,9 +128,22 @@ HRESULT WINAPI D3DReflect(const void *data, SIZE_T data_size, REFIID riid, void { struct d3dcompiler_shader_reflection *object; HRESULT hr; + const DWORD *temp = data;
TRACE("data %p, data_size %lu, riid %s, blob %p\n", data, data_size, debugstr_guid(riid), reflector);
+ if (!data || data_size < 32) + { + WARN("Invalid argument supplied.\n"); + return D3DERR_INVALIDCALL; + } + + if (temp[6] != data_size) + { + WARN("Wrong size supplied.\n"); + return E_FAIL; + } + if (!IsEqualGUID(riid, &IID_ID3D11ShaderReflection)) { WARN("Wrong riid %s, accept only %s!\n", debugstr_guid(riid), debugstr_guid(&IID_ID3D11ShaderReflection));