From: Takashi Sakamoto <o-takashi@sakamocchi.jp>
To: Takashi Iwai <tiwai@suse.de>
Cc: alsa-devel@alsa-project.org, clemens@ladisch.de,
ffado-devel@lists.sf.net
Subject: Re: [PATCH 2/3] ALSA: control: add dimension validator for userspace element
Date: Fri, 1 Jul 2016 06:34:45 +0900 [thread overview]
Message-ID: <57759075.4040501@sakamocchi.jp> (raw)
In-Reply-To: <s5hmvm2d8tb.wl-tiwai@suse.de>
Hi,
On Jun 30 2016 23:56, Takashi Iwai wrote:
> On Thu, 30 Jun 2016 16:04:44 +0200,
> Takashi Sakamoto wrote:
>>
>> 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 within 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>
>> ---
>> sound/core/control.c | 29 +++++++++++++++++++++++++++++
>> 1 file changed, 29 insertions(+)
>>
>> diff --git a/sound/core/control.c b/sound/core/control.c
>> index a85d455..af167ff 100644
>> --- a/sound/core/control.c
>> +++ b/sound/core/control.c
>> @@ -805,6 +805,33 @@ static int snd_ctl_elem_list(struct snd_card *card,
>> return 0;
>> }
>>
>> +static bool validate_dimension(struct snd_ctl_elem_info *info)
>> +{
>> + unsigned int elements;
>> + unsigned int i;
>> +
>> + /*
>> + * When drivers don't use dimen field, this value is zero and pass the
>> + * validation. Else, calculated number of elements is validated.
>> + */
>> + elements = info->dimen.d[0];
>> + for (i = 1; i < ARRAY_SIZE(info->dimen.d); ++i) {
>> + if (info->dimen.d[i] == 0)
>> + break;
>> + if (info->dimen.d[i] < 0)
>> + return false;
>> + elements *= info->dimen.d[i];
>> + }
>
> Just minor nit-picks:
>
> - No check for the negative sign of the first element?
>
> - It'd be clearer to check zero of the first element before the
> loop.
>
> - Safer to have an integer overflow check in such calculation.
Indeed. I'll post revised version, later.
Thanks
Takashi Sakamoto
next prev parent reply other threads:[~2016-06-30 21:34 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-06-30 14:04 [PATCH 0/3] ALSA: add dimension information validator Takashi Sakamoto
2016-06-30 14:04 ` [PATCH 1/3] ALSA: echoaudio: purge contradictions between dimension matrix members and total number of members Takashi Sakamoto
2016-06-30 14:04 ` [PATCH 2/3] ALSA: control: add dimension validator for userspace element Takashi Sakamoto
2016-06-30 14:56 ` Takashi Iwai
2016-06-30 21:34 ` Takashi Sakamoto [this message]
2016-06-30 14:04 ` [PATCH 3/3] ALSA: control: add dimension validator for kernel driver Takashi Sakamoto
-- strict thread matches above, loose matches on Subject: below --
2016-07-01 4:15 [PATCH 0/3 v2] ALSA: ctl: add dimension information validator Takashi Sakamoto
2016-07-01 4:15 ` [PATCH 2/3] ALSA: control: add dimension validator for userspace element Takashi Sakamoto
2016-07-01 7:19 ` Takashi Iwai
2016-07-01 8:30 ` Takashi Sakamoto
2016-07-01 8:50 ` Takashi Iwai
2016-07-01 9:08 ` Takashi Sakamoto
2016-07-01 9:52 ` Takashi Iwai
2016-07-01 10:46 ` Takashi Sakamoto
2016-07-01 10:52 ` Takashi Iwai
2016-07-01 11:10 [PATCH 0/3 v3] ALSA: ctl: add dimension information validator Takashi Sakamoto
2016-07-01 11:10 ` [PATCH 2/3] ALSA: control: add dimension validator for userspace element Takashi Sakamoto
2016-07-01 12:29 ` Takashi Sakamoto
2016-07-02 7:56 ` Takashi Iwai
2016-07-06 13:07 ` Takashi Sakamoto
2016-07-06 13:34 ` Takashi Iwai
2016-07-06 14:18 ` Takashi Sakamoto
2016-07-06 14:40 ` Takashi Iwai
2016-07-07 8:52 ` Takashi Sakamoto
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=57759075.4040501@sakamocchi.jp \
--to=o-takashi@sakamocchi.jp \
--cc=alsa-devel@alsa-project.org \
--cc=clemens@ladisch.de \
--cc=ffado-devel@lists.sf.net \
--cc=tiwai@suse.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.