Procházet zdrojové kódy

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.
Yuri Kunde Schlesner před 9 roky
rodič
revize
26b68313b9
1 změnil soubory, kde provedl 1 přidání a 3 odebrání
  1. 1 3
      src/video_core/shader/shader.cpp

+ 1 - 3
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;
     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];