From c26e43d759f7d5db03ebc530cc69ff809faa7be2 Mon Sep 17 00:00:00 2001 From: Ramesh Katuri Date: Thu, 20 Sep 2018 19:02:29 +0530 Subject: [PATCH] Fix for stack overflow in eq selection in drc module Bug:114735603 Test: vendor Change-Id: I83be3dfe1111caa1acd244b0a9ba2a8944c92981 --- decoder/drc_src/impd_drc_common.h | 2 ++ decoder/drc_src/impd_drc_selection_process.c | 1 + 2 files changed, 3 insertions(+) diff --git a/decoder/drc_src/impd_drc_common.h b/decoder/drc_src/impd_drc_common.h index dd0e621..62f54c3 100644 --- a/decoder/drc_src/impd_drc_common.h +++ b/decoder/drc_src/impd_drc_common.h @@ -86,6 +86,8 @@ extern "C" { #define SELECTION_CANDIDATE_COUNT_MAX 32 +#define MAX_NUM_COMPRESSION_EQ (16) + #define PROC_COMPLETE 1 #define UNEXPECTED_ERROR 2 #define PARAM_ERROR 3 diff --git a/decoder/drc_src/impd_drc_selection_process.c b/decoder/drc_src/impd_drc_selection_process.c index b5b1b7f..53f76b0 100644 --- a/decoder/drc_src/impd_drc_selection_process.c +++ b/decoder/drc_src/impd_drc_selection_process.c @@ -640,6 +640,7 @@ WORD32 impd_find_eq_set_no_compression(ia_drc_config* pstr_drc_config, for (c = 0; c < str_eq_instructions->drc_set_id_count; c++) { if ((str_eq_instructions->drc_set_id[c] == ID_FOR_ANY_DRC) || (str_eq_instructions->drc_set_id[c] == 0)) { + if (k >= MAX_NUM_COMPRESSION_EQ) return UNEXPECTED_ERROR; num_compression_eq_id[k] = str_eq_instructions->eq_set_id; k++; }