On 04/27/2011 02:03 PM, Måns Rullgård wrote:

> Justin Ruggles <[email protected]> writes:
> 
>> On 04/27/2011 01:46 PM, Diego Biurrun wrote:
>>
>>> ---
>>>  libavcodec/vorbisdec.c |    6 +++---
>>>  1 files changed, 3 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c
>>> index a9ddc7d..c698220 100644
>>> --- a/libavcodec/vorbisdec.c
>>> +++ b/libavcodec/vorbisdec.c
>>> @@ -735,8 +735,8 @@ static int 
>>> vorbis_parse_setup_hdr_mappings(vorbis_context *vc)
>>>  
>>>          if (get_bits1(gb)) {
>>>              mapping_setup->coupling_steps = get_bits(gb, 8) + 1;
>>> -            mapping_setup->magnitude      = 
>>> av_mallocz(mapping_setup->coupling_steps * sizeof(uint_fast8_t));
>>> -            mapping_setup->angle          = 
>>> av_mallocz(mapping_setup->coupling_steps * sizeof(uint_fast8_t));
>>> +            mapping_setup->magnitude      = 
>>> av_mallocz(mapping_setup->coupling_steps * 
>>> sizeof(mapping_setup->coupling_steps));
>>> +            mapping_setup->angle          = 
>>> av_mallocz(mapping_setup->coupling_steps * 
>>> sizeof(mapping_setup->coupling_steps));
>>>              for (j = 0; j < mapping_setup->coupling_steps; ++j) {
>>>                  GET_VALIDATED_INDEX(mapping_setup->magnitude[j], 
>>> ilog(vc->audio_channels - 1), vc->audio_channels)
>>>                  GET_VALIDATED_INDEX(mapping_setup->angle[j],     
>>> ilog(vc->audio_channels - 1), vc->audio_channels)
>>> @@ -753,7 +753,7 @@ static int 
>>> vorbis_parse_setup_hdr_mappings(vorbis_context *vc)
>>>          }
>>>  
>>>          if (mapping_setup->submaps>1) {
>>> -            mapping_setup->mux = av_mallocz(vc->audio_channels * 
>>> sizeof(uint_fast8_t));
>>> +            mapping_setup->mux = av_mallocz(vc->audio_channels * 
>>> sizeof(vc->audio_channels));
>>>              for (j = 0; j < vc->audio_channels; ++j)
>>>                  mapping_setup->mux[j] = get_bits(gb, 4);
>>>          }
>>
>> these changes don't make sense to me.  shouldn't the sizeof param be the
>> size of one element in the destination array?
> 
> Yes, the patch makes no sense at all.  It should be like this:
> 
>   ptr = malloc(count * sizeof(*ptr))


It might be useful to add something like:

void av_mallocp(void **ptr, int count)
{
    if (INT_MAX / sizeof(**ptr) >= count)
        *ptr = av_malloc(count * sizeof(**ptr));
}


-Justin
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to