=?UTF-8?Q?J=C3=B3zef=20Kucia=20?=: wined3d: Validate render state in wined3d_device_set_render_state().

Alexandre Julliard julliard at wine.codeweavers.com
Thu Jan 28 10:06:46 CST 2016


Module: wine
Branch: master
Commit: 99fbc04bfe13bf2471725f88000892f8fee9f526
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=99fbc04bfe13bf2471725f88000892f8fee9f526

Author: Józef Kucia <jkucia at codeweavers.com>
Date:   Thu Jan 28 00:17:46 2016 +0100

wined3d: Validate render state in wined3d_device_set_render_state().

Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
Signed-off-by: Henri Verbeet <hverbeet at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wined3d/device.c | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c
index 177d008..7059e21 100644
--- a/dlls/wined3d/device.c
+++ b/dlls/wined3d/device.c
@@ -2032,10 +2032,17 @@ static void resolve_depth_buffer(struct wined3d_state *state)
 void CDECL wined3d_device_set_render_state(struct wined3d_device *device,
         enum wined3d_render_state state, DWORD value)
 {
-    DWORD old_value = device->state.render_states[state];
+    DWORD old_value;
 
     TRACE("device %p, state %s (%#x), value %#x.\n", device, debug_d3drenderstate(state), state, value);
 
+    if (state > WINEHIGHEST_RENDER_STATE)
+    {
+        WARN("Unhandled render state %#x.\n", state);
+        return;
+    }
+
+    old_value = device->state.render_states[state];
     device->update_state->render_states[state] = value;
 
     /* Handle recording of state blocks. */




More information about the wine-cvs mailing list