[FFmpeg-devel] [PATCH 2/8] avformat/mov: Support size = 1 and size = 0 special cases in probing

Chad Fraleigh chadf at triularity.org
Sat Feb 6 21:33:38 EET 2021


On 2/6/2021 9:22 AM, Michael Niedermayer wrote:
> Signed-off-by: Michael Niedermayer <michael at niedermayer.cc>
> ---
>   libavformat/mov.c | 5 +++++
>   1 file changed, 5 insertions(+)
> 
> diff --git a/libavformat/mov.c b/libavformat/mov.c
> index 9406e42f49..70f76caff5 100644
> --- a/libavformat/mov.c
> +++ b/libavformat/mov.c
> @@ -7113,6 +7113,11 @@ static int mov_probe(const AVProbeData *p)
>           if ((offset + 8) > (unsigned int)p->buf_size)
>               break;
>           size = AV_RB32(p->buf + offset);
> +        if (size == 1 && offset + 16 > (unsigned int)p->buf_size) {
> +            size = AV_RB64(p->buf+offset + 8);

Just curious, what happens when size == 1 and the buffer is too small? 
Is leaving it as a size of 1 still valid, or should it be handled as a 
format error (e.g. abort the loop)?


> +        } else if (size == 0) {
> +            size = p->buf_size - offset;
> +        }
>           tag = AV_RL32(p->buf + offset + 4);
>           switch(tag) {
>           /* check for obvious tags */
> 


More information about the ffmpeg-devel mailing list