瀏覽代碼

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 年之前
父節點
當前提交
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) {
             RasterizerRegs::VSOutputAttributes::Semantic semantic = semantics[comp];
-            float24* out = &vertex_slots[semantic];
             if (semantic < vertex_slots.size()) {
-                *out = input.attr[i][comp];
+                vertex_slots[semantic] = input.attr[i][comp];
             } else if (semantic != RasterizerRegs::VSOutputAttributes::INVALID) {
                 LOG_ERROR(HW_GPU, "Invalid/unknown semantic id: %u", (unsigned int)semantic);
             }