]> git.sesse.net Git - ffmpeg/commitdiff
avformat/webmdashenc: Fix segfault when no filename is given when live
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Tue, 14 Jul 2020 20:49:15 +0000 (22:49 +0200)
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Sun, 26 Jul 2020 14:22:24 +0000 (16:22 +0200)
by checking a bit earlier.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
libavformat/webmdashenc.c

index eb286cab9960409a371db91c5a8b8c861f2ce585..3eefd6df8b48dc184a9385bd4a3f0c1e00252a67 100644 (file)
@@ -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",