winealsa.drv: Add mmdevapi driver.
aeikum at codeweavers.com
Tue Apr 26 13:50:19 CDT 2011
On 04/26/2011 11:26 AM, Andrew Eikum wrote:
>> + TRACE("cbSize: %u\n", fmt->cbSize);
>> Old Wine code contains several comments about never ever reading cbSize
>> in the WAVE_FORMAT_PCM case because it's a potential read past the structure
>> and may cause a segmentation fault. Is it not a valid concern anymore?
>> WAVEFORMATEX contains the cbSize slot. However if the winmm:wave* functions
>> pass through their argument to mmdevapi, it may well end up to be the smaller
>> PCMWAVEFORMAT only.
> You're right, and I wasn't careful enough about this. WinMM has a test
> for it, and I'll add a similar one to mmdevapi.
Hm, to my surprise it seems MS no longer does this check as of Win7.
When cbSize is out of bounds, it returns a strange error on Vista
(AUDCLNT_E_DEVICE_INVALIDATED) and crashes on Win7:
When cbSize is in bounds, everything works fine:
So, I think I'll leave it crashing. We'll just have to be careful in
WinMM to pass a valid structure through.
More information about the wine-devel