audio: hal: Adding safe checks to avoid crash
Added checks for parameter validation.
Change-Id: I9cf7f967b0c9be222b37ea2cca69161073460c83
diff --git a/hal/audio_extn/audio_extn.c b/hal/audio_extn/audio_extn.c
index 92b7c4f..c1c4460 100644
--- a/hal/audio_extn/audio_extn.c
+++ b/hal/audio_extn/audio_extn.c
@@ -1439,11 +1439,11 @@
int ret = -EINVAL;
struct stream_out out;
uint32_t snd_device = 0, backend_idx = 0;
- struct audio_device_config_param *adev_device_cfg_ptr = adev->device_cfg_params;
+ struct audio_device_config_param *adev_device_cfg_ptr;
ALOGV("%s", __func__);
- if (!device_cfg_params || !adev) {
+ if (!device_cfg_params || !adev || !adev->device_cfg_params) {
ALOGE("%s:: Invalid Param", __func__);
return ret;
}
@@ -1454,6 +1454,7 @@
return ret;
}
+ adev_device_cfg_ptr = adev->device_cfg_params;
/* Create an out stream to get snd device from audio device */
out.devices = device_cfg_params->device;
out.sample_rate = device_cfg_params->sample_rate;
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index 677dfd4..c01e6f7 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -2256,8 +2256,8 @@
{
int ret = -EINVAL, i = 0, j = 0;
- if (mm_params == NULL && out != NULL) {
- ALOGE("%s:: Invalid mix matrix params", __func__);
+ if (mm_params == NULL || out == NULL) {
+ ALOGE("%s:: Invalid mix matrix or out param", __func__);
goto exit;
}
@@ -2305,7 +2305,7 @@
struct audio_usecase *usecase = NULL;
if (mm_params == NULL || out == NULL) {
- ALOGE("%s:: Invalid mix matrix params", __func__);
+ ALOGE("%s:: Invalid mix matrix or out param", __func__);
goto exit;
}
@@ -2316,11 +2316,10 @@
goto exit;
usecase = get_usecase_from_list(out->dev, out->usecase);
- if (usecase == NULL) {
- ALOGE("%s: Invalid usecase", __func__);
+ if (!usecase) {
+ ALOGE("%s: Get usecase list failed!", __func__);
goto exit;
}
-
out->downmix_params.num_output_channels = mm_params->num_output_channels;
out->downmix_params.num_input_channels = mm_params->num_input_channels;