From ef1342bae711aa798f5fa6e5cb9260237395b304 Mon Sep 17 00:00:00 2001 From: Jacek Caban Date: Tue, 1 Jul 2014 17:00:36 +0200 Subject: [PATCH] iphlpapi: Protect res_init call with critical section. --- dlls/iphlpapi/iphlpapi_main.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c index 8c55048066f..70a063b32c6 100644 --- a/dlls/iphlpapi/iphlpapi_main.c +++ b/dlls/iphlpapi/iphlpapi_main.c @@ -1068,10 +1068,21 @@ static void sockaddr_in6_to_WS_storage( SOCKADDR_STORAGE *dst, const struct sock #ifdef HAVE_STRUCT___RES_STATE /* call res_init() just once because of a bug in Mac OS X 10.4 */ /* Call once per thread on systems that have per-thread _res. */ + +static CRITICAL_SECTION res_init_cs; +static CRITICAL_SECTION_DEBUG res_init_cs_debug = { + 0, 0, &res_init_cs, + { &res_init_cs_debug.ProcessLocksList, &res_init_cs_debug.ProcessLocksList }, + 0, 0, { (DWORD_PTR)(__FILE__ ": res_init_cs") } +}; +static CRITICAL_SECTION res_init_cs = { &res_init_cs_debug, -1, 0, 0, 0, 0 }; + static void initialise_resolver(void) { + EnterCriticalSection(&res_init_cs); if ((_res.options & RES_INIT) == 0) res_init(); + LeaveCriticalSection(&res_init_cs); } static int get_dns_servers( SOCKADDR_STORAGE *servers, int num, BOOL ip4_only ) -- 2.11.4.GIT