diff options
author | Vasyl Gello <vasek.gello@gmail.com> | 2018-07-01 10:57:35 +0300 |
---|---|---|
committer | Jan Altensen <info@stricted.net> | 2019-02-05 20:11:41 +0100 |
commit | d758a17389c09b319177f3f8929d4be06e376f0f (patch) | |
tree | 6367384575843f2957457d25b6ac7386a226ccdb | |
parent | 884938a258cb608f316d52ce759a6cbd84597d59 (diff) | |
download | android_hardware_samsung-d758a17389c09b319177f3f8929d4be06e376f0f.tar.gz android_hardware_samsung-d758a17389c09b319177f3f8929d4be06e376f0f.tar.bz2 android_hardware_samsung-d758a17389c09b319177f3f8929d4be06e376f0f.zip |
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 <vasek.gello@gmail.com>
Change-Id: I2f2d9bc8151cf61af112a9544268513effacacb5
-rw-r--r-- | audio/audio_hw.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/audio/audio_hw.c b/audio/audio_hw.c index fd9c0b0..712d3f8 100644 --- a/audio/audio_hw.c +++ b/audio/audio_hw.c @@ -1181,6 +1181,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); @@ -3485,6 +3490,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); |