提交 df803e13 编写于 作者: T Takashi Iwai

ALSA: control: Warn if too long string is passed to snd_ctl_enum_info()

This allows us to catch the bugs in drivers easily.
Signed-off-by: NTakashi Iwai <tiwai@suse.de>
上级 be93709c
...@@ -1747,6 +1747,9 @@ int snd_ctl_enum_info(struct snd_ctl_elem_info *info, unsigned int channels, ...@@ -1747,6 +1747,9 @@ int snd_ctl_enum_info(struct snd_ctl_elem_info *info, unsigned int channels,
info->value.enumerated.items = items; info->value.enumerated.items = items;
if (info->value.enumerated.item >= items) if (info->value.enumerated.item >= items)
info->value.enumerated.item = items - 1; info->value.enumerated.item = items - 1;
WARN(strlen(names[info->value.enumerated.item]) >= sizeof(info->value.enumerated.name),
"ALSA: too long item name '%s'\n",
names[info->value.enumerated.item]);
strlcpy(info->value.enumerated.name, strlcpy(info->value.enumerated.name,
names[info->value.enumerated.item], names[info->value.enumerated.item],
sizeof(info->value.enumerated.name)); sizeof(info->value.enumerated.name));
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册