Просмотр исходного кода

video_core: Fix benign out-of-bounds indexing of array (#2553)

The resulting pointer wasn't written to unless the index was verified as
valid, but that's still UB and triggered debug checks in MSVC.

Reported by garrettboast on IRC
Yuri Kunde Schlesner 9 лет назад
Родитель
Сommit
e2fa1ca5e1
1 измененных файлов с 1 добавлено и 2 удалено
  1. 1 2
      src/video_core/shader/shader.cpp

+ 1 - 2
src/video_core/shader/shader.cpp

@@ -39,9 +39,8 @@ OutputVertex OutputVertex::FromAttributeBuffer(const RasterizerRegs& regs, Attri
 
 
         for (unsigned comp = 0; comp < 4; ++comp) {
         for (unsigned comp = 0; comp < 4; ++comp) {
             RasterizerRegs::VSOutputAttributes::Semantic semantic = semantics[comp];
             RasterizerRegs::VSOutputAttributes::Semantic semantic = semantics[comp];
-            float24* out = &vertex_slots[semantic];
             if (semantic < vertex_slots.size()) {
             if (semantic < vertex_slots.size()) {
-                *out = input.attr[i][comp];
+                vertex_slots[semantic] = input.attr[i][comp];
             } else if (semantic != RasterizerRegs::VSOutputAttributes::INVALID) {
             } else if (semantic != RasterizerRegs::VSOutputAttributes::INVALID) {
                 LOG_ERROR(HW_GPU, "Invalid/unknown semantic id: %u", (unsigned int)semantic);
                 LOG_ERROR(HW_GPU, "Invalid/unknown semantic id: %u", (unsigned int)semantic);
             }
             }