From d38bdcabf534e2c639299f3a8fff8b9e048bbaf4 Mon Sep 17 00:00:00 2001 From: Oxore Date: Mon, 1 May 2023 01:26:44 +0300 Subject: Fix Bcc --- disasm.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'disasm.cpp') diff --git a/disasm.cpp b/disasm.cpp index 2ca0491..df7f16a 100644 --- a/disasm.cpp +++ b/disasm.cpp @@ -513,6 +513,10 @@ static void disasm_bra_bsr_bcc( } const char suffix = dispmt ? 's' : 'w'; if (dispmt == 0) { + // Check the boundaries + if (node.offset + kInstructionSizeStepBytes >= code.occupied_size) { + return disasm_verbatim(node, instr, code, s); + } dispmt = GetI16BE(code.buffer + node.offset + kInstructionSizeStepBytes); if (dispmt % kInstructionSizeStepBytes) { return disasm_verbatim(node, instr, code, s); @@ -584,7 +588,7 @@ static void disasm_move_movea( src.SNPrint(src_str, sizeof(src_str)); dst.SNPrint(dst_str, sizeof(dst_str)); const char *mnemonic = dst.mode == AddrMode::kAn ? "movea" : "move"; - snprintf(node.mnemonic, kMarkBufferSize, "%s%c", mnemonic, suffix); + snprintf(node.mnemonic, kMnemonicBufferSize, "%s%c", mnemonic, suffix); snprintf(node.arguments, kArgsBufferSize, "%s,%s", src_str, dst_str); node.size = kInstructionSizeStepBytes + src.Size() + dst.Size(); } -- cgit v1.2.3