From 7bb885a3d3ac4fdc435fc79fc5632b6b9e70ffa7 Mon Sep 17 00:00:00 2001 From: Andrew Eikum Date: Wed, 10 Feb 2016 12:54:40 -0600 Subject: [PATCH] xaudio2: Protect access to submix voice during creation (Coverity). Signed-off-by: Andrew Eikum Signed-off-by: Alexandre Julliard --- dlls/xaudio2_7/xaudio_dll.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/dlls/xaudio2_7/xaudio_dll.c b/dlls/xaudio2_7/xaudio_dll.c index 0c39354b1b3..503c974cb6d 100644 --- a/dlls/xaudio2_7/xaudio_dll.c +++ b/dlls/xaudio2_7/xaudio_dll.c @@ -1475,8 +1475,10 @@ static HRESULT WINAPI IXAudio2Impl_CreateSubmixVoice(IXAudio2 *iface, EnterCriticalSection(&This->lock); LIST_FOR_EACH_ENTRY(sub, &This->submix_voices, XA2SubmixImpl, entry){ + EnterCriticalSection(&sub->lock); if(!sub->in_use) break; + LeaveCriticalSection(&sub->lock); } if(&sub->entry == &This->submix_voices){ @@ -1498,11 +1500,14 @@ static HRESULT WINAPI IXAudio2Impl_CreateSubmixVoice(IXAudio2 *iface, InitializeCriticalSection(&sub->lock); sub->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": XA2SubmixImpl.lock"); + + EnterCriticalSection(&sub->lock); } sub->in_use = TRUE; LeaveCriticalSection(&This->lock); + LeaveCriticalSection(&sub->lock); #if XAUDIO2_VER == 0 *ppSubmixVoice = (IXAudio2SubmixVoice*)&sub->IXAudio20SubmixVoice_iface;