[FFmpeg-devel] [PATCH 1/5] avformat/webmdashenc: Avoid allocation for parsing a number

Andreas Rheinhardt andreas.rheinhardt at gmail.com
Fri May 22 04:45:04 EEST 2020


Andreas Rheinhardt:
> In order to parse a number from a string, the WebM DASH manifest muxer
> would duplicate (via heap-allocation) the part of the string that
> contains the number, then read the number via atoi() and then free the
> duplicate again. This has been replaced by simply using strtoll() (which
> in contrast to atoi() has defined behaviour when the number is not
> representable).
> 
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> ---
>  libavformat/webmdashenc.c | 14 +-------------
>  1 file changed, 1 insertion(+), 13 deletions(-)
> 
> diff --git a/libavformat/webmdashenc.c b/libavformat/webmdashenc.c
> index 465485c90c..05015a08c1 100644
> --- a/libavformat/webmdashenc.c
> +++ b/libavformat/webmdashenc.c
> @@ -425,18 +425,6 @@ static int write_adaptation_set(AVFormatContext *s, int as_index)
>      return 0;
>  }
>  
> -static int to_integer(char *p, int len)
> -{
> -    int ret;
> -    char *q = av_malloc(len);
> -    if (!q)
> -        return AVERROR(ENOMEM);
> -    av_strlcpy(q, p, len);
> -    ret = atoi(q);
> -    av_free(q);
> -    return ret;
> -}
> -
>  static int parse_adaptation_sets(AVFormatContext *s)
>  {
>      WebMDashMuxContext *w = s->priv_data;
> @@ -483,7 +471,7 @@ static int parse_adaptation_sets(AVFormatContext *s)
>                  return ret;
>              q = p;
>              while (*q != '\0' && *q != ',' && *q != ' ') q++;
> -            as->streams[as->nb_streams - 1] = to_integer(p, q - p + 1);
> +            as->streams[as->nb_streams - 1] = strtoll(p, NULL, 10);
>              if (as->streams[as->nb_streams - 1] < 0 ||
>                  as->streams[as->nb_streams - 1] >= s->nb_streams) {
>                  av_log(s, AV_LOG_ERROR, "Invalid value for 'streams' in adapation_sets.\n");
> 
Will apply this patchset tomorrow unless there are objections.

- Andreas


More information about the ffmpeg-devel mailing list