d3dx9: Validate state operation in d3dx_parse_state().

Signed-off-by: Paul Gofman <gofmanp@gmail.com>
Signed-off-by: Matteo Bruni <mbruni@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
feature/deterministic
Paul Gofman 2020-03-24 20:59:38 +03:00 committed by Alexandre Julliard
parent f925becd4a
commit 2b5b069dd7
1 changed files with 6 additions and 0 deletions

View File

@ -5564,6 +5564,12 @@ static HRESULT d3dx_parse_state(struct d3dx_effect *effect, struct d3dx_state *s
state->type = ST_CONSTANT;
read_dword(ptr, &state->operation);
if (state->operation >= ARRAY_SIZE(state_table))
{
WARN("Unknown state operation %u.\n", state->operation);
return D3DERR_INVALIDCALL;
}
TRACE("Operation: %#x (%s)\n", state->operation, state_table[state->operation].name);
read_dword(ptr, &state->index);