aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordvdli <dvdli@google.com>2020-10-29 16:32:44 +0800
committerdvdli <dvdli@google.com>2020-10-29 16:32:44 +0800
commitdbb6ba612745097ffc317fff327a5408ea17bbc5 (patch)
tree346a04acc846f75e590b3404ec3babf83fbd4c0c
parentb39234c6a35378abb18e81ea0967331f68fd9029 (diff)
AOSP CL "tinyalsa: check for NULL mmap_status"
https://android.googlesource.com/platform/external/tinyalsa/+/62644f7a3c4cfa18d7935f731cf59b675669d17a commit 62644f7a3c4cfa18d7935f731cf59b675669d17a author Phil Burk <philburk@google.com> tinyalsa: check for NULL mmap_status pcm_mmap_get_hw_ptr() was not checking pcm->mmap_status and crashed when it was NULL. Bug: 64346189 Test: input_monitor.cpp, see bug report for repro steps Change-Id: I8436686a231eb01a82dd28ca2cce561d5460bcd6
-rw-r--r--src/pcm.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/pcm.c b/src/pcm.c
index a175668..b592780 100644
--- a/src/pcm.c
+++ b/src/pcm.c
@@ -1575,6 +1575,9 @@ int pcm_mmap_get_hw_ptr(struct pcm* pcm, unsigned int *hw_ptr, struct timespec *
if (rc < 0)
return oops(pcm, errno, "pcm_sync_ptr failed");
+ if (pcm->mmap_status == NULL)
+ return oops(pcm, EINVAL, "pcm %p, mmap_status is NULL", pcm);
+
if ((pcm->mmap_status->state != PCM_STATE_RUNNING) &&
(pcm->mmap_status->state != PCM_STATE_DRAINING))
return oops(pcm, ENOSYS, "invalid stream state %d", pcm->mmap_status->state);