diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-03-30 02:50:02 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-07-02 23:56:13 +0200 |
commit | a7e278e467600dcaec47dacb2e2fbfb56ac77505 (patch) | |
tree | ddc8d979e0ebfb1991c0cd2f6ef98a4e8107f668 /libavformat | |
parent | c4c3d3bc1de75a112f84cfae319c3d30aa6d8a90 (diff) | |
download | ffmpeg-a7e278e467600dcaec47dacb2e2fbfb56ac77505.tar.gz |
avformat/webmdashenc: Check codec types
The WebM DASH Manifest muxer only supports VP8, VP9, Vorbis and Opus,
but there was no check for this. The codec type is used to get a pointer
to a string containing the codec name or NULL if it is not one of those
four codecs. Said pointer has then been used without further checks as
string for the %s conversion specifier in an avio_printf()) call which
is undefined behaviour.
This commit adds a check for the supported codec types.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
(cherry picked from commit cbea58b2b35c6409e062c929f0b2ab763b8661eb)
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/webmdashenc.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/libavformat/webmdashenc.c b/libavformat/webmdashenc.c index 14c3888b1e..542410f26b 100644 --- a/libavformat/webmdashenc.c +++ b/libavformat/webmdashenc.c @@ -517,6 +517,14 @@ static int webm_dash_manifest_write_header(AVFormatContext *s) double start = 0.0; int ret; WebMDashMuxContext *w = s->priv_data; + + for (unsigned i = 0; i < s->nb_streams; i++) { + enum AVCodecID codec_id = s->streams[i]->codecpar->codec_id; + if (codec_id != AV_CODEC_ID_VP8 && codec_id != AV_CODEC_ID_VP9 && + codec_id != AV_CODEC_ID_VORBIS && codec_id != AV_CODEC_ID_OPUS) + return AVERROR(EINVAL); + } + ret = parse_adaptation_sets(s); if (ret < 0) { goto fail; |