From f9e1dd5dcfbfb95b9f21c3d317c7d11fb54a6686 Mon Sep 17 00:00:00 2001
From: Stepan Salenikovich <stepan.salenikovich@savoirfairelinux.com>
Date: Fri, 3 Mar 2017 12:02:47 -0500
Subject: [PATCH] manager: prevent nullptr access of audiodriver

The rest of the audio api performs this check as well.

Change-Id: I31d589f2f634e2044ce1c7ca8ab614b2caef4d7b
Reviewed-by: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com>
---
 src/manager.cpp | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/src/manager.cpp b/src/manager.cpp
index 65a154da7d..c5af7a5eef 100644
--- a/src/manager.cpp
+++ b/src/manager.cpp
@@ -2229,6 +2229,12 @@ std::vector<std::string>
 Manager::getAudioOutputDeviceList()
 {
     std::lock_guard<std::mutex> lock(pimpl_->audioLayerMutex_);
+
+    if (not pimpl_->audiodriver_) {
+        RING_ERR("Audio layer not initialized");
+        return {};
+    }
+
     return pimpl_->audiodriver_->getPlaybackDeviceList();
 }
 
@@ -2239,6 +2245,12 @@ std::vector<std::string>
 Manager::getAudioInputDeviceList()
 {
     std::lock_guard<std::mutex> lock(pimpl_->audioLayerMutex_);
+
+    if (not pimpl_->audiodriver_) {
+        RING_ERR("Audio layer not initialized");
+        return {};
+    }
+
     return pimpl_->audiodriver_->getCaptureDeviceList();
 }
 
@@ -2250,6 +2262,11 @@ Manager::getCurrentAudioDevicesIndex()
 {
     std::lock_guard<std::mutex> lock(pimpl_->audioLayerMutex_);
 
+    if (not pimpl_->audiodriver_) {
+        RING_ERR("Audio layer not initialized");
+        return {};
+    }
+
     std::vector<std::string> v;
 
     std::stringstream ssi, sso, ssr;
-- 
GitLab