summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHsin-Yu Chao <hychao@google.com>2018-09-18 17:22:10 +0800
committerchrome-bot <chrome-bot@chromium.org>2018-09-19 08:59:39 -0700
commit81fdac505005f2d88d9d8b0d3bfb8b896dc52bf9 (patch)
tree20bb0a5956b513f4f73ea6ea8e4842d8ab10d523
parentf53d9eb4eebc4300610682f8f5728593ab103e2a (diff)
downloadadhd-81fdac505005f2d88d9d8b0d3bfb8b896dc52bf9.tar.gz
CRAS: alsa_ucm - Free echo ref dev name
Echo ref dev name returned from UCM manager should be freed by caller. Fix it in a few places. BUG=chromium:884893 TEST=USE=asan FEATURES=test emerge-nocturne adhd Change-Id: I6f905a501d62c9019f460fba56232dca61016a34 Reviewed-on: https://chromium-review.googlesource.com/1229795 Commit-Ready: Hsinyu Chao <hychao@chromium.org> Tested-by: Hsinyu Chao <hychao@chromium.org> Reviewed-by: Cheng-Yi Chiang <cychiang@chromium.org> Reviewed-by: Dylan Reid <dgreid@chromium.org>
-rw-r--r--cras/src/server/cras_alsa_card.c1
-rw-r--r--cras/src/server/cras_alsa_ucm.h3
-rw-r--r--cras/src/tests/alsa_card_unittest.cc2
-rw-r--r--cras/src/tests/alsa_ucm_unittest.cc1
4 files changed, 5 insertions, 2 deletions
diff --git a/cras/src/server/cras_alsa_card.c b/cras/src/server/cras_alsa_card.c
index 2b19d9c8..7f7a6204 100644
--- a/cras/src/server/cras_alsa_card.c
+++ b/cras/src/server/cras_alsa_card.c
@@ -443,6 +443,7 @@ static void configure_echo_reference_dev(struct cras_alsa_card *alsa_card)
syslog(LOG_ERR,
"Echo ref dev %s doesn't exist on card %s",
echo_ref_name, alsa_card->name);
+ free((void *)echo_ref_name);
}
}
diff --git a/cras/src/server/cras_alsa_ucm.h b/cras/src/server/cras_alsa_ucm.h
index ede3127e..38377a05 100644
--- a/cras/src/server/cras_alsa_ucm.h
+++ b/cras/src/server/cras_alsa_ucm.h
@@ -262,7 +262,8 @@ const char *ucm_get_device_name_for_dev(
* dev - The device to check echo reference for.
* Returns:
* String containing the node name of the echo reference to this
- * dev. NULL if echo reference doesn't exist.
+ * dev, caller is responsible to free it later. NULL if echo reference
+ * doesn't exist.
*/
const char *ucm_get_echo_reference_dev_name_for_dev(
struct cras_use_case_mgr *mgr, const char *dev);
diff --git a/cras/src/tests/alsa_card_unittest.cc b/cras/src/tests/alsa_card_unittest.cc
index e3a6407d..29c315b8 100644
--- a/cras/src/tests/alsa_card_unittest.cc
+++ b/cras/src/tests/alsa_card_unittest.cc
@@ -841,7 +841,7 @@ TEST(AlsaCard, GG) {
snprintf(nodes[2].name, CRAS_NODE_NAME_BUFFER_SIZE, "dev3");
snprintf(nodes[3].name, CRAS_NODE_NAME_BUFFER_SIZE, "echo ref");
- ucm_get_echo_reference_dev_name_for_dev_return_value[0] = echo_ref;
+ ucm_get_echo_reference_dev_name_for_dev_return_value[0] = strdup(echo_ref);
c = cras_alsa_card_create(&card_info, device_config_dir,
fake_blacklist, NULL);
diff --git a/cras/src/tests/alsa_ucm_unittest.cc b/cras/src/tests/alsa_ucm_unittest.cc
index 15a661a3..3199573c 100644
--- a/cras/src/tests/alsa_ucm_unittest.cc
+++ b/cras/src/tests/alsa_ucm_unittest.cc
@@ -473,6 +473,7 @@ TEST(AlsaUcm, GetEchoReferenceDev) {
ASSERT_EQ(1, snd_use_case_get_called);
EXPECT_EQ(snd_use_case_get_id[0], id_1);
EXPECT_EQ(0, strcmp(echo_ref_dev, value_1.c_str()));
+ free((void *)echo_ref_dev);
}
TEST(AlsaUcm, GetHotwordModels) {