tinyalsa: verify mixer control values
Many kernels don't have proper range checking on
ALSA controls, which can lead to a kernel panic.
Let's cut it off here.
Change-Id: If3b51634f550611d1605d7203d63aca5e683e0aa
diff --git a/mixer.c b/mixer.c
index c4e6765..9e7eec0 100644
--- a/mixer.c
+++ b/mixer.c
@@ -419,10 +419,15 @@
break;
case SNDRV_CTL_ELEM_TYPE_INTEGER:
+ if (value > mixer_ctl_get_range_max(ctl) ||
+ value < mixer_ctl_get_range_min(ctl))
+ return -EINVAL;
ev.value.integer.value[id] = value;
break;
case SNDRV_CTL_ELEM_TYPE_ENUMERATED:
+ if (value < 0 || value >= mixer_ctl_get_num_enums(ctl))
+ return -EINVAL;
ev.value.enumerated.item[id] = value;
break;