diff mbox series

[FFmpeg-devel,2/7] avformat/matroskaenc: Replace impossible condition with assert

Message ID 20200428083645.4909-2-andreas.rheinhardt@gmail.com
State Accepted
Commit ca0a38f2f7803ab8fa12913d0385d4c70f8d6345
Headers show
Series [FFmpeg-devel,1/7] avformat/matroskaenc: Write SeekHead when livestreaming | expand

Checks

Context Check Description
andriy/default pending
andriy/make success Make finished
andriy/make_fate success Make fate finished

Commit Message

Andreas Rheinhardt April 28, 2020, 8:36 a.m. UTC
If a FLAC track uses an unconventional channel layout, the Matroska
muxer adds a WAVEFORMATEXTENSIBLE_CHANNEL_MASK VorbisComment to the
CodecPrivate to preserve this information. And given that FLAC uses
24bit length fields, the muxer checks if the length is more than this
and errors out if it is.

Yet this can never happen, because we create the AVDictionary that is
the source for the VorbisComment. It only contains exactly one entry
that can't grow infinitely large (in fact, the length of the
VorbisComment is <= 4 + 33 + 1 + 18 + strlen(LIBAVFORMAT_IDENT)).
So we can simply assert the size to be < (1 << 24) - 4.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
---
 libavformat/matroskaenc.c | 5 +----
 1 file changed, 1 insertion(+), 4 deletions(-)
diff mbox series

Patch

diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c
index dd77ae64bc..018108b96b 100644
--- a/libavformat/matroskaenc.c
+++ b/libavformat/matroskaenc.c
@@ -631,10 +631,7 @@  static int put_flac_codecpriv(AVFormatContext *s, AVIOContext *pb,
         av_dict_set(&dict, "WAVEFORMATEXTENSIBLE_CHANNEL_MASK", buf, 0);
 
         len = ff_vorbiscomment_length(dict, vendor, NULL, 0);
-        if (len >= (1 << 24) - 4) {
-            av_dict_free(&dict);
-            return AVERROR(EINVAL);
-        }
+        av_assert1(len < (1 << 24) - 4);
 
         data = av_malloc(len + 4);
         if (!data) {