Module: wine Branch: master Commit: 14db70036d37285fb751f829b609e2e74b56ba66 URL: http://source.winehq.org/git/wine.git/?a=commit;h=14db70036d37285fb751f829b6...
Author: Jeff Zaroyko jeffz@jeffz.name Date: Fri Jan 2 17:03:00 2009 +1100
dsound: Check for invalid parameter when unlocking primary buffers.
---
dlls/dsound/primary.c | 8 ++++++-- 1 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/dlls/dsound/primary.c b/dlls/dsound/primary.c index 5812f00..f0ba854 100644 --- a/dlls/dsound/primary.c +++ b/dlls/dsound/primary.c @@ -999,8 +999,12 @@ static HRESULT WINAPI PrimaryBufferImpl_Unlock(
if (!(device->drvdesc.dwFlags & DSDDESC_DONTNEEDPRIMARYLOCK) && device->hwbuf) { HRESULT hres; - - hres = IDsDriverBuffer_Unlock(device->hwbuf, p1, x1, p2, x2); + + if ((char *)p1 - (char *)device->buffer + x1 > device->buflen) + hres = DSERR_INVALIDPARAM; + else + hres = IDsDriverBuffer_Unlock(device->hwbuf, p1, x1, p2, x2); + if (hres != DS_OK) { WARN("IDsDriverBuffer_Unlock failed\n"); return hres;