Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dbab1cb8 authored by Mengdong Lin's avatar Mengdong Lin Committed by Mark Brown
Browse files

ASoC: topology: Check name strings of physical DAI links



Check if the name strings are properly terminated, and only use valid
name strings to find existing physical DAI links to configure.

Signed-off-by: default avatarMengdong Lin <mengdong.lin@linux.intel.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent 6ff67cca
Loading
Loading
Loading
Loading
+16 −2
Original line number Diff line number Diff line
@@ -1994,10 +1994,24 @@ static int soc_tplg_link_config(struct soc_tplg *tplg,
{
	struct snd_soc_dai_link *link;
	const char *name, *stream_name;
	size_t len;
	int ret;

	name = strlen(cfg->name) ? cfg->name : NULL;
	stream_name = strlen(cfg->stream_name) ? cfg->stream_name : NULL;
	len = strnlen(cfg->name, SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
	if (len == SNDRV_CTL_ELEM_ID_NAME_MAXLEN)
		return -EINVAL;
	else if (len)
		name = cfg->name;
	else
		name = NULL;

	len = strnlen(cfg->stream_name, SNDRV_CTL_ELEM_ID_NAME_MAXLEN);
	if (len == SNDRV_CTL_ELEM_ID_NAME_MAXLEN)
		return -EINVAL;
	else if (len)
		stream_name = cfg->stream_name;
	else
		stream_name = NULL;

	link = snd_soc_find_dai_link(tplg->comp->card, cfg->id,
				     name, stream_name);