alsa-utils/alsa-utils-git.patch

85 lines
2.6 KiB
Diff
Raw Normal View History

From 78212445de4c8e07873cbc7dff2abcacd031f151 Mon Sep 17 00:00:00 2001
From: Jaroslav Kysela <perex@perex.cz>
Date: Tue, 1 Jun 2021 17:47:42 +0200
Subject: [PATCH 1/2] alsactl: fix the nested iteration
There may be nested iterations for hw: card names.
Handle this card name in snd_card_iterator_sinit().
BugLink: https://github.com/alsa-project/alsa-lib/issues/142
Fixes: eefc2c6 ("alsactl: use card iterator functions for all card loops")
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
alsactl/utils.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/alsactl/utils.c b/alsactl/utils.c
index c79fd95..881b505 100644
--- a/alsactl/utils.c
+++ b/alsactl/utils.c
@@ -247,6 +247,8 @@ int snd_card_iterator_sinit(struct snd_card_iterator *iter, const char *cardname
int cardno = -1;
if (cardname) {
+ if (strncmp(cardname, "hw:", 3) == 0)
+ cardname += 3;
cardno = snd_card_get_index(cardname);
if (cardno < 0) {
error("Cannot find soundcard '%s'...", cardname);
--
2.30.2
From 3d7a6facd9e1f962eef6c4ba3aa4cdc22477a6ac Mon Sep 17 00:00:00 2001
From: Chao Song <chao.song@linux.intel.com>
Date: Mon, 31 May 2021 10:29:57 +0800
Subject: [PATCH 2/2] topology: fix potential null pointer from strchr
This patch adds check to the return pointer from strchr,
because it may be null and cause segment fault, if component
is not properly constructed.
Fixes: https://github.com/alsa-project/alsa-utils/pull/91
Signed-off-by: Chao Song <chao.song@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
---
topology/pre-process-dapm.c | 5 +++++
topology/pre-process-object.c | 5 +++++
2 files changed, 10 insertions(+)
diff --git a/topology/pre-process-dapm.c b/topology/pre-process-dapm.c
index 450ca71..dbaf2f1 100644
--- a/topology/pre-process-dapm.c
+++ b/topology/pre-process-dapm.c
@@ -146,6 +146,11 @@ static int tplg_pp_get_widget_name(struct tplg_pre_processor *tplg_pp,
/* get class name */
args = strchr(string, '.');
+ if (!args) {
+ SNDERR("Error getting class name for %s\n", string);
+ return -EINVAL;
+ }
+
class_name = calloc(1, strlen(string) - strlen(args) + 1);
if (!class_name)
return -ENOMEM;
diff --git a/topology/pre-process-object.c b/topology/pre-process-object.c
index 09aa375..ac8caec 100644
--- a/topology/pre-process-object.c
+++ b/topology/pre-process-object.c
@@ -492,6 +492,11 @@ static int tplg_pp_add_object_tuple_section(struct tplg_pre_processor *tplg_pp,
}
type = strchr(token_ref, '.');
+ if(!type) {
+ SNDERR("Error getting type for %s\n", token_ref);
+ return -EINVAL;
+ }
+
token = calloc(1, strlen(token_ref) - strlen(type) + 1);
if (!token)
return -ENOMEM;
--
2.30.2