dsound: Validate buffer pointers in Unlock methods.
This commit is contained in:
parent
b1fdaa81b0
commit
7fae5f4f9f
|
@ -651,6 +651,12 @@ static HRESULT WINAPI IDirectSoundBufferImpl_Unlock(IDirectSoundBuffer8 *iface,
|
||||||
if (!p2)
|
if (!p2)
|
||||||
x2 = 0;
|
x2 = 0;
|
||||||
|
|
||||||
|
if((p1 && ((BYTE*)p1 < This->buffer->memory ||
|
||||||
|
(BYTE*)p1 >= This->buffer->memory + This->buflen)) ||
|
||||||
|
(p2 && ((BYTE*)p2 < This->buffer->memory ||
|
||||||
|
(BYTE*)p2 >= This->buffer->memory + This->buflen)))
|
||||||
|
return DSERR_INVALIDPARAM;
|
||||||
|
|
||||||
if (x1 || x2)
|
if (x1 || x2)
|
||||||
{
|
{
|
||||||
RtlAcquireResourceShared(&This->device->buffer_list_lock, TRUE);
|
RtlAcquireResourceShared(&This->device->buffer_list_lock, TRUE);
|
||||||
|
|
|
@ -850,6 +850,12 @@ static HRESULT WINAPI PrimaryBufferImpl_Unlock(
|
||||||
return DSERR_PRIOLEVELNEEDED;
|
return DSERR_PRIOLEVELNEEDED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if((p1 && ((BYTE*)p1 < device->buffer ||
|
||||||
|
(BYTE*)p1 >= device->buffer + device->buflen)) ||
|
||||||
|
(p2 && ((BYTE*)p2 < device->buffer ||
|
||||||
|
(BYTE*)p2 >= device->buffer + device->buflen)))
|
||||||
|
return DSERR_INVALIDPARAM;
|
||||||
|
|
||||||
return DS_OK;
|
return DS_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue