removed the 32 bits register I forget to remove last commit

This commit is contained in:
thrieg 2025-12-12 00:19:20 +01:00
parent 5f996dd661
commit fca9fbaa8a

View file

@ -6,7 +6,7 @@
/* By: thrieg <thrieg@student.42mulhouse.fr> +#+ +:+ +#+ */ /* By: thrieg <thrieg@student.42mulhouse.fr> +#+ +:+ +#+ */
/* +#+#+#+#+#+ +#+ */ /* +#+#+#+#+#+ +#+ */
/* Created: 2025/12/11 04:31:15 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; *argc = g_syscalls_64[regs->orig_rax].argc;
return (g_syscalls_64[regs->orig_rax].name); 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; *argc = g_syscalls_32[regs->orig_rax & 0xFFFFFFFF].argc;
return (g_syscalls_32[regs->orig_rax & 0xFFFFFFFF].name); 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 else
{ {
char placeholder_syscall_name[50]; //max 20 chars in a 64 bit register rax at worst, + leeway 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) 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); ssize_t buffer_len = snprintf(buffer, sizeof(buffer), "%s(", placeholder_syscall_name);
if (buffer_len < 0) if (buffer_len < 0)