aboutsummaryrefslogtreecommitdiff
path: root/src/video_core/shader/shader.cpp
diff options
context:
space:
mode:
authorYuri Kunde Schlesner <yuriks@yuriks.net>2016-09-15 23:16:39 -0700
committerYuri Kunde Schlesner <yuriks@yuriks.net>2016-09-29 21:11:36 -0700
commit26b68313b90d3aa47c9f6cfcc4c86cfc11d48a28 (patch)
treeb74634e5531b3a06b62189493f6adf1789c191e1 /src/video_core/shader/shader.cpp
parent4b14e17b18e20f7f8077f0c7efc0e3a44ca8ca2a (diff)
VideoCore: Fix out-of-bounds read in ShaderSetup::ProduceDebugInfo
As far as I can tell, memset was replaced by a fill without correcting the parameter type, causing an out-of-bounds array read in the Vec4 constructor.
Diffstat (limited to 'src/video_core/shader/shader.cpp')
-rw-r--r--src/video_core/shader/shader.cpp4
1 files changed, 1 insertions, 3 deletions
diff --git a/src/video_core/shader/shader.cpp b/src/video_core/shader/shader.cpp
index 272f3ffe1b..3febe739ca 100644
--- a/src/video_core/shader/shader.cpp
+++ b/src/video_core/shader/shader.cpp
@@ -146,10 +146,8 @@ DebugData<true> ShaderSetup::ProduceDebugInfo(const InputVertex& input, int num_
state.debug.max_opdesc_id = 0;
// Setup input register table
+ boost::fill(state.registers.input, Math::Vec4<float24>::AssignToAll(float24::Zero()));
const auto& attribute_register_map = config.input_register_map;
- float24 dummy_register;
- boost::fill(state.registers.input, &dummy_register);
-
for (unsigned i = 0; i < num_attributes; i++)
state.registers.input[attribute_register_map.GetRegisterForAttribute(i)] = input.attr[i];