kselftest: alsa: Validate values read from enumerations
authorMark Brown <broonie@kernel.org>
Fri, 17 Dec 2021 13:02:13 +0000 (13:02 +0000)
committerTakashi Iwai <tiwai@suse.de>
Sat, 25 Dec 2021 08:13:28 +0000 (09:13 +0100)
Enumerations should return a value between 0 and items-1, check that this
is the case.

Signed-off-by: Mark Brown <broonie@kernel.org>
Reviewed-by: Cezary Rojewski <cezary.rojewski@intel.com>
Link: https://lore.kernel.org/r/20211217130213.3893415-3-broonie@kernel.org
Signed-off-by: Takashi Iwai <tiwai@suse.de>
tools/testing/selftests/alsa/mixer-test.c

index b009fc5..17f158d 100644 (file)
@@ -276,6 +276,23 @@ bool ctl_value_index_valid(struct ctl_data *ctl, snd_ctl_elem_value_t *val,
                }
                break;
 
+       case SND_CTL_ELEM_TYPE_ENUMERATED:
+               int_val = snd_ctl_elem_value_get_enumerated(val, index);
+
+               if (int_val < 0) {
+                       ksft_print_msg("%s.%d negative value %ld for enumeration\n",
+                                      ctl->name, index, int_val);
+                       return false;
+               }
+
+               if (int_val >= snd_ctl_elem_info_get_items(ctl->info)) {
+                       ksft_print_msg("%s.%d value %ld more than item count %ld\n",
+                                      ctl->name, index, int_val,
+                                      snd_ctl_elem_info_get_items(ctl->info));
+                       return false;
+               }
+               break;
+
        default:
                /* No tests for other types */
                break;