[FFmpeg-devel] [PATCH 06/20] avformat/matroskaenc: Check functions that can fail

Andreas Rheinhardt andreas.rheinhardt at gmail.com
Wed Feb 5 14:59:00 EET 2020


Andreas Rheinhardt:
> Sometimes it has not been checked whether opening the dynamic buffer for
> writing Tags fails; this might have led to segfaults.
> 
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> ---
>  libavformat/matroskaenc.c | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
> index 8cea829b31..7857656309 100644
> --- a/libavformat/matroskaenc.c
> +++ b/libavformat/matroskaenc.c
> @@ -1557,7 +1557,9 @@ static int mkv_write_tag_targets(AVFormatContext *s, uint32_t elementid,
>          ret = mkv_add_seekhead_entry(mkv->seekhead, MATROSKA_ID_TAGS, avio_tell(s->pb));
>          if (ret < 0) return ret;
>  
> -        start_ebml_master_crc32(s->pb, &mkv->tags_bc, mkv, MATROSKA_ID_TAGS);
> +        ret = start_ebml_master_crc32(s->pb, &mkv->tags_bc, mkv, MATROSKA_ID_TAGS);
> +        if (ret < 0)
> +            return ret;
>      }
>      pb = mkv->tags_bc;
>  
> @@ -1653,7 +1655,10 @@ static int mkv_write_tags(AVFormatContext *s)
>              if (st->codecpar->codec_type == AVMEDIA_TYPE_ATTACHMENT)
>                  continue;
>  
> -            mkv_write_tag_targets(s, MATROSKA_ID_TAGTARGETS_TRACKUID, i + 1, &tag_target);
> +            ret = mkv_write_tag_targets(s, MATROSKA_ID_TAGTARGETS_TRACKUID,
> +                                        i + 1, &tag_target);
> +            if (ret < 0)
> +                return ret;
>              pb = mkv->tags_bc;
>  
>              tag = start_ebml_master(pb, MATROSKA_ID_SIMPLETAG, 0);
> 
Ping.

- Andreas


More information about the ffmpeg-devel mailing list