summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Belyavsky <belyavskyv@gmail.com>2022-11-26 13:33:38 +0300
committerQt Cherry-pick Bot <cherrypick_bot@qt-project.org>2022-11-27 18:47:03 +0000
commit128c7c43060f87b76cd4e27160cf27a6d09ed228 (patch)
tree1b7cf7c399dc89db11fd87036872d00ea9be87a3
parentc342b814c3fefb948aa5c6742bbac23c41b4ed77 (diff)
downloadqtmultimedia-128c7c43060f87b76cd4e27160cf27a6d09ed228.tar.gz
QWindowsMediaDevices: Fix potential null-pointer-access
It seems sometimes IMMDeviceEnumerator::GetDefaultAudioEndpoint() may return null device even when succeeded. It's probably a bug in MS Core Audio. So we'll check this explicitly to prevent null-pointer-access. Fixes: QTBUG-108898 Change-Id: Iba1e6673f12a3dafd80f3de11e40babeb1e21e35 Reviewed-by: Lars Knoll <lars@knoll.priv.no> (cherry picked from commit 9f7eb2bacee57bf95f975f97d72e98d9ca19714e) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r--src/multimedia/windows/qwindowsmediadevices.cpp9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/multimedia/windows/qwindowsmediadevices.cpp b/src/multimedia/windows/qwindowsmediadevices.cpp
index b01ac5fa5..fcad8bab7 100644
--- a/src/multimedia/windows/qwindowsmediadevices.cpp
+++ b/src/multimedia/windows/qwindowsmediadevices.cpp
@@ -208,10 +208,11 @@ QList<QAudioDevice> QWindowsMediaDevices::availableDevices(QAudioDevice::Mode mo
LPWSTR id = nullptr;
QString sid;
- if (SUCCEEDED(m_deviceEnumerator->GetDefaultAudioEndpoint(dataFlow, ERole::eMultimedia, dev.address()))
- && SUCCEEDED(dev->GetId(&id))) {
- sid = QString::fromWCharArray(id);
- CoTaskMemFree(id);
+ if (SUCCEEDED(m_deviceEnumerator->GetDefaultAudioEndpoint(dataFlow, ERole::eMultimedia, dev.address()))) {
+ if (dev && SUCCEEDED(dev->GetId(&id))) {
+ sid = QString::fromWCharArray(id);
+ CoTaskMemFree(id);
+ }
}
return sid.toUtf8();
}();