ALSA: control: add dimension validator for userspace elements
authorTakashi Sakamoto <o-takashi@sakamocchi.jp>
Thu, 7 Jul 2016 12:57:10 +0000 (21:57 +0900)
committerTakashi Iwai <tiwai@suse.de>
Thu, 7 Jul 2016 13:47:50 +0000 (15:47 +0200)
commit860c1994a70a0d2ab6f87fb7e72e722a8fb2c64c
treedcd1244adeac93bdd572b790d5945466df84fc58
parentb268c34e5ee92a4cc3099b0caaf26e6bfbdf0f18
ALSA: control: add dimension validator for userspace elements

The 'dimen' field in struct snd_ctl_elem_info is used to compose all of
members in the element as multi-dimensional matrix. The field has four
members. Each member represents the width in each dimension level by
element member unit. For example, if the members consist of typical
two dimensional matrix, the dimen[0] represents the number of rows
and dimen[1] represents the number of columns (or vise-versa).

The total members in the matrix should be exactly the same as the number
of members in the element, while current implementation has no validator
of this information. In a view of userspace applications, the information
must be valid so that it cannot cause any bugs such as buffer-over-run.

This commit adds a validator of dimension information for userspace
applications which add new element sets. When they add the element sets
with wrong dimension information, they receive -EINVAL.

Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/core/control.c