[FFmpeg-devel] [PATCH] avfilter/vf_lenscorrection: add assert to ensure there are not more planes than the correction array is large

Daniel Oberhoff danieloberhoff at gmail.com
Thu Aug 21 13:54:16 CEST 2014


---
 Daniel Oberhoff 
 daniel.oberhoff at gmail.com



On Aug 21, 2014, at 1:53 PM, Daniel Oberhoff <daniel.oberhoff at gmail.com> wrote:

> 
> ---
> Daniel Oberhoff 
> daniel.oberhoff at gmail.com
> 
> 
> 
> On Aug 21, 2014, at 1:52 PM, Michael Niedermayer <michaelni at gmx.at> wrote:
> 
>> On Thu, Aug 21, 2014 at 12:57:08PM +0200, Daniel Oberhoff wrote:
>>> 
>>> ---
>>> Daniel Oberhoff 
>>> daniel.oberhoff at gmail.com
>>> 
>>> 
>>> 
>>> On Aug 21, 2014, at 12:34 PM, Michael Niedermayer <michaelni at gmx.at> wrote:
>>> 
>>>> Exceeding the count would write out of array, and should not occur with any
>>>> current pixel format
>>>> 
>>>> Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
>>>> ---
>>>> libavfilter/vf_lenscorrection.c |    3 +++
>>>> 1 file changed, 3 insertions(+)
>>>> 
>>>> diff --git a/libavfilter/vf_lenscorrection.c b/libavfilter/vf_lenscorrection.c
>>>> index 58184b0..01380fc 100644
>>>> --- a/libavfilter/vf_lenscorrection.c
>>>> +++ b/libavfilter/vf_lenscorrection.c
>>>> @@ -26,6 +26,7 @@
>>>> #include <stdlib.h>
>>>> #include <math.h>
>>>> 
>>>> +#include "libavutil/avassert.h"
>>>> #include "libavutil/opt.h"
>>>> #include "libavutil/intreadwrite.h"
>>>> #include "libavutil/pixdesc.h"
>>>> @@ -132,6 +133,8 @@ static int config_props(AVFilterLink *outlink)
>>>>   outlink->w = rect->width = inlink->w;
>>>>   outlink->h = rect->height = inlink->h;
>>>>   rect->nb_planes = av_pix_fmt_count_planes(inlink->format);
>>>> +    av_assert0(rect->nb_planes <= FF_ARRAY_ELEMS(rect->correction));
>>> 
>>> how many planes can there ever be?
>> 
>> I think the current pixel formats dont have more than 4 but
>> things like CMYKA would have 5, and formats could contain more planes
>> in principle, we dont support such stuff ATM but cameras exist that
>> record infrared in addition to vissible inforation. for example
> 
> But this data only comes from another part of ffmpeg, right? Should then there not be some kind of config macro or such along FF_MAX_NUM_PLANES?

Or how about doing alloc/realloc instead?


More information about the ffmpeg-devel mailing list