Added protection for GetCapabilities() failure.
On GetCapabilities() failure, caps.cDestinations is left uninitialized.
Without a protection the following code runs in a random loop
in the worst case up to 0xFFFFFFFF times.
for (destId = 0; destId < caps.cDestinations; destId++)
{
GetDestinationLineInfo(mixId, destId, destLine);
BUG=webrtc:4882
Review URL: https://codereview.webrtc.org/1269563002
Cr-Commit-Position: refs/heads/master@{#9663}
This commit is contained in:
parent
5f5f11cc8b
commit
a12ba5502c
@ -195,7 +195,9 @@ int32_t AudioMixerManager::EnumerateSpeakers()
|
||||
for (mixId = 0; mixId < nDevices; mixId++)
|
||||
{
|
||||
// get capabilities for the specified mixer ID
|
||||
GetCapabilities(mixId, caps);
|
||||
if (!GetCapabilities(mixId, caps))
|
||||
continue;
|
||||
|
||||
WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "[mixerID=%d] %s: ", mixId, WideToUTF8(caps.szPname));
|
||||
// scan all avaliable destinations for this mixer
|
||||
for (destId = 0; destId < caps.cDestinations; destId++)
|
||||
@ -280,7 +282,9 @@ int32_t AudioMixerManager::EnumerateMicrophones()
|
||||
for (mixId = 0; mixId < nDevices; mixId++)
|
||||
{
|
||||
// get capabilities for the specified mixer ID
|
||||
GetCapabilities(mixId, caps);
|
||||
if (!GetCapabilities(mixId, caps))
|
||||
continue;
|
||||
|
||||
WEBRTC_TRACE(kTraceInfo, kTraceAudioDevice, _id, "[mixerID=%d] %s: ", mixId, WideToUTF8(caps.szPname));
|
||||
// scan all avaliable destinations for this mixer
|
||||
for (destId = 0; destId < caps.cDestinations; destId++)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user