[vlc-devel] [vlc-commits] avcodec: missing initializer (cid #1191736)

Tristan Matthews le.businessman at gmail.com
Tue Aug 5 00:33:31 CEST 2014


On Mon, Aug 4, 2014 at 5:35 PM, Rémi Denis-Courmont <remi at remlab.net> wrote:
> Le lundi 4 août 2014, 23:14:30 Tristan Matthews a écrit :
>> vlc | branch: master | Tristan Matthews <le.businessman at gmail.com> | Mon Aug
>>  4 17:00:57 2014 -0400| [2da697261ff55dfe4f654ce9a591c3b4d5f98815] |
>> committer: Tristan Matthews
>>
>> avcodec: missing initializer (cid #1191736)
>
>>
>> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2da697261ff55dfe4f6
>> > 54ce9a591c3b4d5f98815
>> ---
>>
>>  modules/codec/avcodec/encoder.c |    2 +-
>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/modules/codec/avcodec/encoder.c
>> b/modules/codec/avcodec/encoder.c index 0c4f2e4..8f2b898 100644
>> --- a/modules/codec/avcodec/encoder.c
>> +++ b/modules/codec/avcodec/encoder.c
>> @@ -709,7 +709,7 @@ int OpenEncoder( vlc_object_t *p_this )
>>           * Copied from audio.c
>>           */
>>          const unsigned i_order_max = 8 * sizeof(p_context->channel_layout);
>> -        uint32_t pi_order_dst[AOUT_CHAN_MAX];
>> +        uint32_t pi_order_dst[AOUT_CHAN_MAX] = { };
>
> Do you care to explain how this fixes anything? I don't see how any error case
> is handled any better than before.

In aout_CheckChannelReorder, both the channel re-ordering mask and successive
values of the pi_vlc_chan_order_wg4 array were being compared against
potentially
uninitialized values of pi_order_dst. The latter case is more
problematic since it's the
loop exit condition.

Another related issue I see here is that pi_order_dst is AOUT_CHAN_MAX (aka 9)
elements long, whereas pi_vlc_chan_order_wg4 is 10 elements long, so potentially
pi_order_dst could be read past the end (unless I'm missing something).

Maybe Ilkka would know if pi_order_dst should instead have a length of
AOUT_CHAN_MAX + 1 (with a 0 as the last element)
to avoid this?

Best,
Tristan



More information about the vlc-devel mailing list