diff options
author | Yuri Kunde Schlesner <yuriks@yuriks.net> | 2017-02-10 20:51:09 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-10 20:51:09 -0800 |
commit | e2fa1ca5e102bc4187d494dc11f202d93495de59 (patch) | |
tree | 16c2ba1fddc3cb6cd6548d08dc65aa56b3b5da09 | |
parent | 2889372e47624e368df0d0361cb38b8100f047dd (diff) |
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
-rw-r--r-- | src/video_core/shader/shader.cpp | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/video_core/shader/shader.cpp b/src/video_core/shader/shader.cpp index c860375a1..60c5b9ad5 100644 --- a/src/video_core/shader/shader.cpp +++ b/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); } |