Commit 10f2f194 authored by Mark Brown's avatar Mark Brown Committed by Takashi Iwai
Browse files

kselftest: alsa: Validate values read from enumerations



Enumerations should return a value between 0 and items-1, check that this
is the case.

Signed-off-by: default avatarMark Brown <broonie@kernel.org>
Reviewed-by: default avatarCezary Rojewski <cezary.rojewski@intel.com>
Link: https://lore.kernel.org/r/20211217130213.3893415-3-broonie@kernel.org


Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 3f48b137
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -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;