From 51d9a9c1d36cbf183f9b8b9fa3b64dc4997da83e Mon Sep 17 00:00:00 2001 From: Mason Reed Date: Wed, 6 Nov 2024 11:05:56 -0500 Subject: Prevent race in windows platform binary view initialization --- platform/windows/platform_windows.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'platform/windows/platform_windows.cpp') diff --git a/platform/windows/platform_windows.cpp b/platform/windows/platform_windows.cpp index 0c33bbee..b4b7c55d 100644 --- a/platform/windows/platform_windows.cpp +++ b/platform/windows/platform_windows.cpp @@ -9,6 +9,7 @@ class WindowsX86Platform: public Platform { uint32_t m_fsbase; Ref m_teb; + std::mutex m_tebMutex; public: WindowsX86Platform(Architecture* arch): Platform(arch, "windows-x86") @@ -45,6 +46,8 @@ public: virtual void BinaryViewInit(BinaryView* view) override { + // Locking here so that if we have two views in BinaryViewInit at once we don't race to init m_teb. + std::lock_guard lock(m_tebMutex); if (!m_teb) m_teb = Type::PointerType(GetArchitecture()->GetAddressSize(), Type::NamedType(QualifiedName("TEB"), GetTypeByName(QualifiedName("TEB")))); } -- cgit v1.3.1