From 14d8b51bacf2c46c27d79c87249efecf00f4eb39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rico=20Sch=C3=BCller?= <kgbricola@web.de> Date: Tue, 15 Feb 2011 19:07:47 +0100 Subject: [PATCH] d3dcompiler: Add argument check in D3DReflect(). --- dlls/d3dcompiler_43/d3dcompiler_43_main.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/dlls/d3dcompiler_43/d3dcompiler_43_main.c b/dlls/d3dcompiler_43/d3dcompiler_43_main.c index 365b6315373..7e130fd19a2 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)); -- GitLab