From 9f7eb2bacee57bf95f975f97d72e98d9ca19714e Mon Sep 17 00:00:00 2001 From: Vladimir Belyavsky Date: Sat, 26 Nov 2022 13:33:38 +0300 Subject: 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 Pick-to: 6.2 6.4 Change-Id: Iba1e6673f12a3dafd80f3de11e40babeb1e21e35 Reviewed-by: Lars Knoll --- src/multimedia/windows/qwindowsmediadevices.cpp | 9 +++++---- 1 file 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 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(); }(); -- cgit v1.2.3