hal: fix null pointer references and data initialization errors
- add null pointer check and initialize uninitialized variables
CRs-Fixed: 2075786
Change-Id: I3e983673f36005be795a0d3adb3c54b5dcf0f002
diff --git a/hal/audio_extn/keep_alive.c b/hal/audio_extn/keep_alive.c
index 87cb122..8bd1da1 100644
--- a/hal/audio_extn/keep_alive.c
+++ b/hal/audio_extn/keep_alive.c
@@ -114,6 +114,11 @@
struct keep_alive_cmd *cmd =
(struct keep_alive_cmd *)calloc(1, sizeof(struct keep_alive_cmd));
+ if (cmd == NULL) {
+ ALOGE("%s: cmd is NULL", __func__);
+ return -ENOMEM;
+ }
+
cmd->req = r;
list_add_tail(&ka.cmd_list, &cmd->node);
pthread_cond_signal(&ka.cond);
@@ -271,6 +276,12 @@
/*send calibration*/
usecase = calloc(1, sizeof(struct audio_usecase));
+
+ if (usecase == NULL) {
+ ALOGE("%s: usecase is NULL", __func__);
+ rc = -ENOMEM;
+ goto exit;
+ }
usecase->type = PCM_PLAYBACK;
usecase->out_snd_device = snd_device;
diff --git a/hal/audio_hw_extn_api.c b/hal/audio_hw_extn_api.c
index 0ee927e..20a27e8 100644
--- a/hal/audio_hw_extn_api.c
+++ b/hal/audio_hw_extn_api.c
@@ -325,7 +325,7 @@
bytes_written = bytes;
}
ALOGV("%s: flag 0x%x, bytes %zd, read %zd, ret %zd timestamp 0x%"PRIx64"",
- __func__, out->flags, bytes, bytes_written, ret, *timestamp);
+ __func__, out->flags, bytes, bytes_written, ret, timestamp == NULL ? 0 : *timestamp);
} else {
bytes_written = out->qahwi_out.base.write(&out->stream, buffer, bytes);
ALOGV("%s: flag 0x%x, bytes %zd, read %zd, ret %zd",
diff --git a/qahw_api/test/qahw_effect_test.c b/qahw_api/test/qahw_effect_test.c
index 61b73a7..bc249f3 100644
--- a/qahw_api/test/qahw_effect_test.c
+++ b/qahw_api/test/qahw_effect_test.c
@@ -755,7 +755,7 @@
int reply_data;
uint32_t reply_size = sizeof(int);
uint32_t array_size = sizeof(qahw_effect_param_t) + 2 * sizeof(int32_t);
- uint32_t buf32[array_size];
+ uint32_t buf32[array_size], buf32_2[array_size];
qahw_effect_param_t *values;
int enable;
@@ -794,6 +794,8 @@
}
if (thr_ctxt->cmd_code == QAHW_EFFECT_CMD_ENABLE || thr_ctxt->cmd_code == QAHW_EFFECT_CMD_DISABLE) {
enable = ((thr_ctxt->cmd_code == QAHW_EFFECT_CMD_ENABLE) ? 1 : 0);
+
+ values = (qahw_effect_param_t *)buf32_2;
values->psize = 2 * sizeof(int32_t);
values->vsize = sizeof(int32_t);
*(int32_t *)values->data = ASPHERE_PARAM_ENABLE;