[FFmpeg-devel] [PATCH 1/3] avformat/utils: Remove redundant check

Andreas Rheinhardt andreas.rheinhardt at gmail.com
Fri Mar 26 06:37:59 EET 2021


Andreas Rheinhardt:
> This check is outdated because the caller doesn't need to check that
> the multiplication overflows when using av_realloc_array() (the code
> in question used av_realloc() before that); furthermore, the check
> is also a remnant of the time in which our allocation functions
> didn't use size_t parameters.
> 
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> ---
> It would btw make more sense for AVFormatContext.max_streams to be
> unsigned.
> 
>  libavformat/utils.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/libavformat/utils.c b/libavformat/utils.c
> index 524765aeb4..88f6f18f1f 100644
> --- a/libavformat/utils.c
> +++ b/libavformat/utils.c
> @@ -4493,9 +4493,10 @@ AVStream *avformat_new_stream(AVFormatContext *s, const AVCodec *c)
>      int i;
>      AVStream **streams;
>  
> -    if (s->nb_streams >= FFMIN(s->max_streams, INT_MAX/sizeof(*streams))) {
> -        if (s->max_streams < INT_MAX/sizeof(*streams))
> -            av_log(s, AV_LOG_ERROR, "Number of streams exceeds max_streams parameter (%d), see the documentation if you wish to increase it\n", s->max_streams);
> +    if (s->nb_streams >= s->max_streams) {
> +        av_log(s, AV_LOG_ERROR, "Number of streams exceeds max_streams parameter"
> +               " (%d), see the documentation if you wish to increase it\n",
> +               s->max_streams);
>          return NULL;
>      }
>      streams = av_realloc_array(s->streams, s->nb_streams + 1, sizeof(*streams));
> 
Will apply this patchset tomorrow unless there are objections.

- Andreas


More information about the ffmpeg-devel mailing list