citra-emu
/
citra
Archived
1
0
Fork 0

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.
This commit is contained in:
Yuri Kunde Schlesner 2016-09-15 23:16:39 -07:00
parent 4b14e17b18
commit 26b68313b9
1 changed files with 1 additions and 3 deletions

View File

@ -146,10 +146,8 @@ DebugData<true> ShaderSetup::ProduceDebugInfo(const InputVertex& input, int num_
state.debug.max_opdesc_id = 0; state.debug.max_opdesc_id = 0;
// Setup input register table // Setup input register table
boost::fill(state.registers.input, Math::Vec4<float24>::AssignToAll(float24::Zero()));
const auto& attribute_register_map = config.input_register_map; 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++) for (unsigned i = 0; i < num_attributes; i++)
state.registers.input[attribute_register_map.GetRegisterForAttribute(i)] = input.attr[i]; state.registers.input[attribute_register_map.GetRegisterForAttribute(i)] = input.attr[i];