]> git.sesse.net Git - ffmpeg/commitdiff
avformat/webmdashenc: Don't segfault on invalid arguments
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Mon, 18 May 2020 02:43:25 +0000 (04:43 +0200)
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>
Sat, 23 May 2020 04:32:29 +0000 (06:32 +0200)
The current parsing process for adaptation_sets does not guarantee
every adaptation set to contain at least one stream, because the loop
exits immediately as soon as the end of the string has been reached,
without checking whether the currently active adaptation set group is
lacking a stream. This would lead to segfaults lateron as the rest of
the code presumed that every adaptation set contains a stream. This
commit fixes this by erroring out when the last adaptation set group
is incomplete.

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

index fd07b3e34a1568f5662216ce23693bf39cd0d86f..3101e0a0393a231f64952ebff5c4ad0e2ddda4ff 100644 (file)
@@ -437,8 +437,13 @@ static int parse_adaptation_sets(AVFormatContext *s)
     }
     // syntax id=0,streams=0,1,2 id=1,streams=3,4 and so on
     state = new_set;
-    while (p < w->adaptation_sets + strlen(w->adaptation_sets)) {
-        if (state == new_set && *p == ' ') {
+    while (1) {
+        if (*p == '\0') {
+            if (state == new_set)
+                break;
+            else
+                return AVERROR(EINVAL);
+        } else if (state == new_set && *p == ' ') {
             p++;
             continue;
         } else if (state == new_set && !strncmp(p, "id=", 3)) {