hal : platform : fix sound card name comparison
Bug: 27871194.
Change-Id: I228a6704f9e5b94f987d11b485606d9ce25331cb
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 4af0c04..0291ce7 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -37,6 +37,7 @@
#define AUDIO_DATA_BLOCK_MIXER_CTL "HDMI EDID"
#define CVD_VERSION_MIXER_CTL "CVD Version"
+#define min(a, b) ((a) < (b) ? (a) : (b))
/*
* This file will have a maximum of 38 bytes:
@@ -985,7 +986,7 @@
// need to carryforward old file name
if (!strncmp(snd_card_name, TOMTOM_8226_SND_CARD_NAME,
- sizeof(TOMTOM_8226_SND_CARD_NAME))) {
+ min(strlen(TOMTOM_8226_SND_CARD_NAME), strlen(snd_card_name)))) {
snprintf(mixer_xml_file, sizeof(mixer_xml_file), "%s_%s.xml",
MIXER_XML_BASE_STRING, TOMTOM_MIXER_FILE_SUFFIX );
} else {
@@ -1030,11 +1031,13 @@
* example: msm8994-tomtom-mtp-snd-card
* <b> or sub string of the card name, i.e. <device>-<codec>
* example: msm8994-tomtom
- * so use length of my_data->snd_card_name for comparision
+ * snd_card_name is truncated to 32 charaters as per mixer_get_name() implementation
+ * so use min of my_data->snd_card_name and snd_card_name length for comparison
*/
if (my_data->snd_card_name != NULL &&
- strncmp(snd_card_name, my_data->snd_card_name, strlen(my_data->snd_card_name)) != 0) {
+ strncmp(snd_card_name, my_data->snd_card_name,
+ min(strlen(snd_card_name), strlen(my_data->snd_card_name))) != 0) {
ALOGI("%s: found valid sound card %s, but not primary sound card %s",
__func__, snd_card_name, my_data->snd_card_name);
retry_num = 0;