From f83669821b960e95f76807d1d64db07926fe3f5b Mon Sep 17 00:00:00 2001 From: Liu Zheng Date: Thu, 8 Aug 2024 10:15:07 +0800 Subject: [PATCH] fix: mips array out of bounds When the incoming data is 4, the index defined by this macro has a crash Log: mips array out of bounds Pick-to: 6.8 6.7 6.5 Change-Id: I5acff5479f17e55d5731443d08b0915c701968f6 Reviewed-by: Ulf Hermann --- src/3rdparty/masm/disassembler/mips32/Mips32Opcode.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/3rdparty/masm/disassembler/mips32/Mips32Opcode.cpp b/src/3rdparty/masm/disassembler/mips32/Mips32Opcode.cpp index 164217eb55..afe3661f48 100644 --- a/src/3rdparty/masm/disassembler/mips32/Mips32Opcode.cpp +++ b/src/3rdparty/masm/disassembler/mips32/Mips32Opcode.cpp @@ -228,7 +228,7 @@ void Mips32Opcode::formatJumpEncodingOpcode(uint32_t iOp, uint32_t index, uint32 void Mips32Opcode::formatREGIMMEncodingOpcode(uint8_t rs, uint8_t rt, int16_t imm, uint32_t* opcodePtr) { const char *opcodes[] = { "bltz", "bgez", "bltzl", "bgezl" }; - if (rt < sizeof(opcodes)) + if (rt < 4) FORMAT_INSTR(OPCODE_FMT "%s, 0x%x", opcodes[rt], registerName(rs), reinterpret_cast(opcodePtr+1) + (imm << 2)); else FORMAT_INSTR("unknown REGIMM encoding opcode 0x%x", rt);