diff options
author | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-07-14 22:49:15 +0200 |
---|---|---|
committer | Andreas Rheinhardt <andreas.rheinhardt@gmail.com> | 2020-07-26 16:22:24 +0200 |
commit | c1fab8637e4bd9e0f09ae31247b709a22dafa440 (patch) | |
tree | 9292240d4ae5b6115c55e8224e9d4629de2cfbdd | |
parent | 93694fe777d12a9432b5ceeb564631da6311ae26 (diff) | |
download | ffmpeg-c1fab8637e4bd9e0f09ae31247b709a22dafa440.tar.gz |
avformat/webmdashenc: Fix segfault when no filename is given when live
by checking a bit earlier.
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
-rw-r--r-- | libavformat/webmdashenc.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/libavformat/webmdashenc.c b/libavformat/webmdashenc.c index eb286cab99..3eefd6df8b 100644 --- a/libavformat/webmdashenc.c +++ b/libavformat/webmdashenc.c @@ -171,8 +171,7 @@ static int write_representation(AVFormatContext *s, AVStream *stream, char *id, AVDictionaryEntry *filename = av_dict_get(stream->metadata, FILENAME, NULL, 0); AVDictionaryEntry *bandwidth = av_dict_get(stream->metadata, BANDWIDTH, NULL, 0); const char *bandwidth_str; - if ((w->is_live && (!filename)) || - (!w->is_live && (!irange || !cues_start || !cues_end || !filename || !bandwidth))) { + if (!w->is_live && (!irange || !cues_start || !cues_end || !filename || !bandwidth)) { return AVERROR_INVALIDDATA; } avio_printf(s->pb, "<Representation id=\"%s\"", id); @@ -380,7 +379,10 @@ static int write_adaptation_set(AVFormatContext *s, int as_index) av_dict_get(s->streams[as->streams[0]]->metadata, FILENAME, NULL, 0); char *initialization_pattern = NULL; char *media_pattern = NULL; - int ret = parse_filename(filename->value, NULL, &initialization_pattern, + int ret; + if (!filename) + return AVERROR(EINVAL); + ret = parse_filename(filename->value, NULL, &initialization_pattern, &media_pattern); if (ret) return ret; avio_printf(s->pb, "<ContentComponent id=\"1\" type=\"%s\"/>\n", |