From 37b143251432df2b26f813da7a4275796ffd0027 Mon Sep 17 00:00:00 2001 From: LC Date: Fri, 10 Jul 2026 06:06:28 -0400 Subject: [PATCH] x32/Thread: Fix off-by-one in get_thread_area 12, 13, and 14 are the only valid TLS areas. --- Source/Tools/LinuxEmulation/LinuxSyscalls/x32/Thread.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Tools/LinuxEmulation/LinuxSyscalls/x32/Thread.cpp b/Source/Tools/LinuxEmulation/LinuxSyscalls/x32/Thread.cpp index 1f79290e1..4be514b9c 100644 --- a/Source/Tools/LinuxEmulation/LinuxSyscalls/x32/Thread.cpp +++ b/Source/Tools/LinuxEmulation/LinuxSyscalls/x32/Thread.cpp @@ -154,7 +154,7 @@ void RegisterThread(FEX::HLE::SyscallHandler* Handler) { REGISTER_SYSCALL_IMPL_X32(get_thread_area, [](FEXCore::Core::CpuStateFrame* Frame, struct user_desc* u_info) -> uint64_t { // Index to fetch comes from the user_desc uint32_t Entry = u_info->entry_number; - if (Entry < TLS_NextEntry || Entry > TLS_MaxEntry) { + if (Entry < TLS_NextEntry || Entry >= TLS_MaxEntry) { return -EINVAL; }