From 0095f3df328f33e6f48062725ae20e8f8ded1d70 Mon Sep 17 00:00:00 2001 From: Vasyl Gello Date: Sun, 1 Jul 2018 10:57:35 +0300 Subject: audio_hw: Prevent referencing input devices from empty list Fixes audioserver crash in in_get_capture_position() if PCM input device was not properly opened. Signed-off-by: Vasyl Gello Change-Id: I2f2d9bc8151cf61af112a9544268513effacacb5 --- audio/audio_hw.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/audio/audio_hw.c b/audio/audio_hw.c index d28dc30..042a12d 100644 --- a/audio/audio_hw.c +++ b/audio/audio_hw.c @@ -1176,6 +1176,11 @@ static int32_t update_echo_reference(struct stream_in *in, size_t frames) b.delay_ns = 0; struct pcm_device *pcm_device; + if (list_empty(&in->pcm_dev_list)) { + ALOGW("%s: pcm device list empty", __func__); + return b.delay_ns; + } + pcm_device = node_to_item(list_head(&in->pcm_dev_list), struct pcm_device, stream_list_node); @@ -3479,6 +3484,11 @@ static int in_get_capture_position(const struct audio_stream_in *stream, struct pcm_device *pcm_device; int ret = -ENOSYS; + if (list_empty(&in->pcm_dev_list)) { + ALOGW("%s: pcm device list empty", __func__); + return -ENODEV; + } + pcm_device = node_to_item(list_head(&in->pcm_dev_list), struct pcm_device, stream_list_node); -- cgit v1.2.3