Sfoglia il codice sorgente

Avoid OOB array access reading passthrough attr mask

YFC 1.5 extended the size of the varying mask used to hold passthrough attrs without considering this
Billy Laws 3 anni fa
parent
commit
d34275a260

+ 1 - 1
src/shader_recompiler/frontend/maxwell/translate_program.cpp

@@ -259,7 +259,7 @@ IR::Program TranslateProgram(ObjectPool<IR::Inst>& inst_pool, ObjectPool<IR::Blo
         program.is_geometry_passthrough = sph.common0.geometry_passthrough != 0;
         if (program.is_geometry_passthrough) {
             const auto& mask{env.GpPassthroughMask()};
-            for (size_t i = 0; i < program.info.passthrough.mask.size(); ++i) {
+            for (size_t i = 0; i < mask.size() * 32; ++i) {
                 program.info.passthrough.mask[i] = ((mask[i / 32] >> (i % 32)) & 1) == 0;
             }