]> git.alsa-project.org Git - alsa-lib.git/commitdiff
control: ctlparse - accept enum values in '' or ""
authorJaroslav Kysela <perex@perex.cz>
Wed, 27 Nov 2019 13:59:17 +0000 (14:59 +0100)
committerJaroslav Kysela <perex@perex.cz>
Thu, 28 Nov 2019 14:02:04 +0000 (15:02 +0100)
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
src/control/ctlparse.c

index 900af0c753c9b94acda5e8dac54b5afdcbd3e4d4..b0bb5ee3bbb8262a4486e346477d50cddaaac3bb 100644 (file)
@@ -273,6 +273,7 @@ static int get_ctl_enum_item_index(snd_ctl_t *handle,
        char *ptr = (char *)*ptrp;
        int items, i, len;
        const char *name;
+       char end;
   
        items = snd_ctl_elem_info_get_items(info);
        if (items <= 0)
@@ -283,9 +284,14 @@ static int get_ctl_enum_item_index(snd_ctl_t *handle,
                if (snd_ctl_elem_info(handle, info) < 0)
                        return -1;
                name = snd_ctl_elem_info_get_item_name(info);
+               end = *ptr;
+               if (end == '\'' || end == '"')
+                       ptr++;
+               else
+                       end = '\0';
                len = strlen(name);
-               if (! strncmp(name, ptr, len)) {
-                       if (! ptr[len] || ptr[len] == ',' || ptr[len] == '\n') {
+               if (strncmp(name, ptr, len) == 0) {
+                       if (ptr[len] == end || ptr[len] == ',' || ptr[len] == '\n') {
                                ptr += len;
                                *ptrp = ptr;
                                return i;