[vlc-devel] [PATCH] amem: fix integer overflow above 262143Hz
Thomas Guillem
thomas at gllm.fr
Mon Jan 20 13:06:38 CET 2020
On Mon, Jan 20, 2020, at 12:02, Farid HAMMANE wrote:
> Hello,
>
> If this patch is ok for you, could you please apply it?
Yes, I just pushed it. Thanks for this patch.
> Thank you in advance
> Best regards
>
> Farid
>
> On Wed, Jan 15, 2020 at 9:25 PM Farid Hammane <farid.hammane at gmail.com> wrote:
>> The variable 'rate' in aout_sys_t had 18bits, which was
>> not enough to represent values greater than 262143.
>>
>> This patch also fixes an inconsistency in the number
>> of supported channels. According to source code, where
>> channel mapping is configured, amem only supports 8
>> channels.
>>
>> Signed-off-by: Farid Hammane <farid.hammane at gmail.com>
>> ---
>> modules/audio_output/amem.c | 9 +++++----
>> 1 file changed, 5 insertions(+), 4 deletions(-)
>>
>> diff --git a/modules/audio_output/amem.c b/modules/audio_output/amem.c
>> index 0e10a86211..7f144ac334 100644
>> --- a/modules/audio_output/amem.c
>> +++ b/modules/audio_output/amem.c
>> @@ -31,6 +31,7 @@ static int Open (vlc_object_t *);
>> static void Close (vlc_object_t *);
>>
>> #define AMEM_SAMPLE_RATE_MAX 384000
>> +#define AMEM_CHAN_MAX 8
>>
>> vlc_module_begin ()
>> set_shortname (N_("Audio memory"))
>> @@ -49,7 +50,7 @@ vlc_module_begin ()
>> change_private()
>> add_integer ("amem-channels", 2,
>> N_("Channels count"), N_("Channels count"), false)
>> - change_integer_range (1, AOUT_CHAN_MAX)
>> + change_integer_range (1, AMEM_CHAN_MAX)
>> change_private()
>>
>> vlc_module_end ()
>> @@ -67,8 +68,8 @@ typedef struct
>> };
>> struct
>> {
>> - unsigned rate:18;
>> - unsigned channels:14;
>> + unsigned rate;
>> + uint8_t channels;
>> };
>> };
>> void (*play) (void *opaque, const void *data, unsigned count, int64_t pts);
>> @@ -229,7 +230,7 @@ static int Start (audio_output_t *aout, audio_sample_format_t *fmt)
>>
>> /* Ensure that format is supported */
>> if (fmt->i_rate == 0 || fmt->i_rate > AMEM_SAMPLE_RATE_MAX
>> - || channels == 0 || channels > AOUT_CHAN_MAX
>> + || channels == 0 || channels > AMEM_CHAN_MAX
>> || strcmp(format, "S16N") /* TODO: amem-format */)
>> {
>> msg_Err (aout, "format not supported: %s, %u channel(s), %u Hz",
>> --
>> 2.20.1
>>
> _______________________________________________
> vlc-devel mailing list
> To unsubscribe or modify your subscription options:
> https://mailman.videolan.org/listinfo/vlc-devel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.videolan.org/pipermail/vlc-devel/attachments/20200120/f51800b6/attachment.html>
More information about the vlc-devel
mailing list