Commit 62327ebb authored by Jaroslav Kysela's avatar Jaroslav Kysela Committed by Takashi Iwai

ALSA: control led - improve the set_led_id() parser

It may be possible that the string pointer does not move
when parsing. Add a code which detects this state and
simply break the parser loop in this case.
Signed-off-by: default avatarJaroslav Kysela <perex@perex.cz>
Link: https://lore.kernel.org/r/20210331180725.663623-1-perex@perex.czSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 016c2050
...@@ -506,7 +506,7 @@ static char *parse_iface(char *s, unsigned int *val) ...@@ -506,7 +506,7 @@ static char *parse_iface(char *s, unsigned int *val)
static ssize_t set_led_id(struct snd_ctl_led_card *led_card, const char *buf, size_t count, static ssize_t set_led_id(struct snd_ctl_led_card *led_card, const char *buf, size_t count,
bool attach) bool attach)
{ {
char buf2[256], *s; char buf2[256], *s, *os;
size_t len = max(sizeof(s) - 1, count); size_t len = max(sizeof(s) - 1, count);
struct snd_ctl_elem_id id; struct snd_ctl_elem_id id;
int err; int err;
...@@ -517,6 +517,7 @@ static ssize_t set_led_id(struct snd_ctl_led_card *led_card, const char *buf, si ...@@ -517,6 +517,7 @@ static ssize_t set_led_id(struct snd_ctl_led_card *led_card, const char *buf, si
id.iface = SNDRV_CTL_ELEM_IFACE_MIXER; id.iface = SNDRV_CTL_ELEM_IFACE_MIXER;
s = buf2; s = buf2;
while (*s) { while (*s) {
os = s;
if (!strncasecmp(s, "numid=", 6)) { if (!strncasecmp(s, "numid=", 6)) {
s = parse_uint(s + 6, &id.numid); s = parse_uint(s + 6, &id.numid);
} else if (!strncasecmp(s, "iface=", 6)) { } else if (!strncasecmp(s, "iface=", 6)) {
...@@ -546,6 +547,8 @@ static ssize_t set_led_id(struct snd_ctl_led_card *led_card, const char *buf, si ...@@ -546,6 +547,8 @@ static ssize_t set_led_id(struct snd_ctl_led_card *led_card, const char *buf, si
} }
if (*s == ',') if (*s == ',')
s++; s++;
if (s == os)
break;
} }
err = snd_ctl_led_set_id(led_card->number, &id, led_card->led->group, attach); err = snd_ctl_led_set_id(led_card->number, &id, led_card->led->group, attach);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment