From fca9fbaa8a9b2af6335b8d459e88b30c27c6a1cc Mon Sep 17 00:00:00 2001 From: thrieg Date: Fri, 12 Dec 2025 00:19:20 +0100 Subject: [PATCH] removed the 32 bits register I forget to remove last commit --- srcs/utils.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/srcs/utils.c b/srcs/utils.c index 9076810..61dba58 100644 --- a/srcs/utils.c +++ b/srcs/utils.c @@ -6,7 +6,7 @@ /* By: thrieg +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ /* Created: 2025/12/11 04:31:15 by thrieg #+# #+# */ -/* Updated: 2025/12/12 00:17:04 by thrieg ### ########.fr */ +/* Updated: 2025/12/12 00:19:01 by thrieg ### ########.fr */ /* */ /* ************************************************************************** */ @@ -90,7 +90,7 @@ static const char *get_syscall_name(size_t binary_type, struct user_regs_struct *argc = g_syscalls_64[regs->orig_rax].argc; return (g_syscalls_64[regs->orig_rax].name); } - else if (binary_type == 32 && regs->orig_eax < g_syscalls_32_len) + else if (binary_type == 32 && (regs->orig_rax & 0xFFFFFFFF) < g_syscalls_32_len) { *argc = g_syscalls_32[regs->orig_rax & 0xFFFFFFFF].argc; return (g_syscalls_32[regs->orig_rax & 0xFFFFFFFF].name); @@ -150,7 +150,7 @@ void read_regs_and_print_entry(pid_t pid, size_t binary_type) else { char placeholder_syscall_name[50]; //max 20 chars in a 64 bit register rax at worst, + leeway - snprintf(placeholder_syscall_name, sizeof(placeholder_syscall_name), "unknown_syscall_id_%zu", binary_type == 32 ? (size_t)regs.orig_eax : (size_t)regs.orig_rax); + snprintf(placeholder_syscall_name, sizeof(placeholder_syscall_name), "unknown_syscall_id_%zu", binary_type == 32 ? (size_t)(regs.orig_rax & 0xFFFFFFFF) : (size_t)regs.orig_rax); char buffer[400]; //shouldn't be able to overflow because we just print the 64bits registers' values in hex without trying to interpret the string or anything, so max len = syscall_name + 20*argc (64 bit in hex is 16 chars) ssize_t buffer_len = snprintf(buffer, sizeof(buffer), "%s(", placeholder_syscall_name); if (buffer_len < 0)