diff options
author | Eric Laurent <elaurent@google.com> | 2011-05-02 10:15:21 -0700 |
---|---|---|
committer | Jaikumar Ganesh <jaikumar@google.com> | 2011-05-25 11:51:57 -0700 |
commit | eb2093d614aaacd3c61217ca1f15e32576f792ca (patch) | |
tree | 15db67e5d9ce35d4aacda4f2fbb2b1ffd49cc16e | |
parent | be1ed76e85c96adae9a75f2d43abc16ad4dbde26 (diff) | |
download | bluez-eb2093d614aaacd3c61217ca1f15e32576f792ca.tar.gz |
Fix issue 4368520: crash in bluez audio at boot
Added missing initialization of output stream pointer in
device struct and test on valid output stream in set_parameters()
Change-Id: I162c410968dcbd6ed89f939c42bd48dbfe390a71
-rw-r--r-- | audio/android_audio_hw.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/audio/android_audio_hw.c b/audio/android_audio_hw.c index 90bb72e4..63c7bb93 100644 --- a/audio/android_audio_hw.c +++ b/audio/android_audio_hw.c @@ -546,13 +546,15 @@ static int adev_set_parameters(struct audio_hw_device *dev, const char *kvpairs) sizeof(value)); if (ret >= 0) { adev->bt_enabled = !strcmp(value, "true"); - _out_bt_enable(adev->output, adev->bt_enabled); + if (adev->output) + _out_bt_enable(adev->output, adev->bt_enabled); } ret = str_parms_get_str(parms, A2DP_SUSPENDED_PARM, value, sizeof(value)); if (ret >= 0) { adev->suspended = !strcmp(value, "true"); - _out_a2dp_suspend(adev->output, adev->suspended); + if (adev->output) + _out_a2dp_suspend(adev->output, adev->suspended); } pthread_mutex_unlock(&adev->lock); @@ -688,7 +690,9 @@ static int adev_open(const hw_module_t* module, const char* name, return -ENOMEM; adev->bt_enabled = true; + adev->suspended = false; pthread_mutex_init(&adev->lock, NULL); + adev->output = NULL; adev->device.common.tag = HARDWARE_DEVICE_TAG; adev->device.common.version = 0; |