From 7144849d0b08f99d5ed245e9c801c367f8258e99 Mon Sep 17 00:00:00 2001 From: Maarten Lankhorst Date: Tue, 4 Sep 2007 22:58:23 +0200 Subject: [PATCH] dsound: Fix null pointer dereference for waveout in creating buffer. --- dlls/dsound/buffer.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/dlls/dsound/buffer.c b/dlls/dsound/buffer.c index 1a999279c24..5d95078033f 100644 --- a/dlls/dsound/buffer.c +++ b/dlls/dsound/buffer.c @@ -1023,13 +1023,16 @@ HRESULT IDirectSoundBufferImpl_Create( use_hw = !!(dsbd->dwFlags & DSBCAPS_LOCHARDWARE); TRACE("use_hw = %d, capf = 0x%08x, device->drvcaps.dwFlags = 0x%08x\n", use_hw, capf, device->drvcaps.dwFlags); - if (use_hw && (device->drvcaps.dwFlags & capf) != capf) + if (use_hw && ((device->drvcaps.dwFlags & capf) != capf || !device->driver)) { - WARN("Format not supported for hardware buffer\n"); + if (device->driver) + WARN("Format not supported for hardware buffer\n"); HeapFree(GetProcessHeap(),0,dsb->pwfx); HeapFree(GetProcessHeap(),0,dsb); *pdsb = NULL; - return DSERR_BADFORMAT; + if ((device->drvcaps.dwFlags & capf) != capf) + return DSERR_BADFORMAT; + return DSERR_GENERIC; } /* FIXME: check hardware sample rate mixing capabilities */