From 83b286202b296cd68c9b191a2ed05d69254c3803 Mon Sep 17 00:00:00 2001 From: Tim Haloun Date: Tue, 19 Nov 2019 11:04:55 -0800 Subject: [PATCH] Protect against NumberOfEnumeratedDevices and Get[In|Out]putDeviceNames returning inconsistent results. It's possible for an device to be counted but getting its name fails, in which case the utility function returns true but would continue from its loop filling the AudioDeviceNames vector, leading to a smaller output than the later code expects. No-Try: True Bug: b/144729866 Change-Id: If902cada4ef2911bc24fbec0f169da75ff6e6a83 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/160020 Commit-Queue: Henrik Andreassson Reviewed-by: Henrik Andreassson Cr-Commit-Position: refs/heads/master@{#29840} --- modules/audio_device/win/core_audio_base_win.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/audio_device/win/core_audio_base_win.cc b/modules/audio_device/win/core_audio_base_win.cc index c7887cad72..ea57af3062 100644 --- a/modules/audio_device/win/core_audio_base_win.cc +++ b/modules/audio_device/win/core_audio_base_win.cc @@ -282,7 +282,7 @@ int CoreAudioBase::DeviceName(int index, AudioDeviceNames device_names; bool ok = IsInput() ? core_audio_utility::GetInputDeviceNames(&device_names) : core_audio_utility::GetOutputDeviceNames(&device_names); - if (!ok) { + if (!ok || static_cast(device_names.size()) <= index) { RTC_LOG(LS_ERROR) << "Failed to get the device name"; return -1; }