From 37ed49cbb842a4282b56f2877cd30009cff18017 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Fri, 30 May 2025 14:19:16 +0200 Subject: [TRACE][ARM64_DYNAREC] Fixed potential buffer overflow on dynarec_dump scenario --- src/dynarec/arm64/dynarec_arm64_functions.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/dynarec/arm64/dynarec_arm64_functions.c b/src/dynarec/arm64/dynarec_arm64_functions.c index 1e0ea0f9..e1640fd9 100644 --- a/src/dynarec/arm64/dynarec_arm64_functions.c +++ b/src/dynarec/arm64/dynarec_arm64_functions.c @@ -779,7 +779,7 @@ void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t r { if (!dyn->need_dump && !BOX64ENV(dynarec_gdbjit) && !BOX64ENV(dynarec_perf_map)) return; - static char buf[256]; + static char buf[2048]; int length = sprintf(buf, "barrier=%d state=%d/%d/%d(%d:%d->%d:%d), %s=%X/%X, use=%X, need=%X/%X, sm=%d(%d/%d)", dyn->insts[ninst].x64.barrier, dyn->insts[ninst].x64.state_flags, @@ -898,6 +898,7 @@ void inst_name_pass3(dynarec_native_t* dyn, int ninst, const char* name, rex_t r if (BOX64ENV(dynarec_perf_map) && BOX64ENV(dynarec_perf_map_fd) != -1) { writePerfMap(dyn->insts[ninst].x64.addr, dyn->native_start + dyn->insts[ninst].address, dyn->insts[ninst].size / 4, name); } + if(length>sizeof(buf)) printf_log(LOG_NONE, "Warning: buf to small in inst_name_pass3 (%d vs %zd)\n", length, sizeof(buf)); } void print_opcode(dynarec_native_t* dyn, int ninst, uint32_t opcode) -- cgit 1.4.1