You've already forked FFmpeg
mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-08-15 14:13:16 +02:00
avformat/webmdashenc: Don't segfault on invalid arguments
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>
This commit is contained in:
@@ -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
|
// syntax id=0,streams=0,1,2 id=1,streams=3,4 and so on
|
||||||
state = new_set;
|
state = new_set;
|
||||||
while (p < w->adaptation_sets + strlen(w->adaptation_sets)) {
|
while (1) {
|
||||||
if (state == new_set && *p == ' ') {
|
if (*p == '\0') {
|
||||||
|
if (state == new_set)
|
||||||
|
break;
|
||||||
|
else
|
||||||
|
return AVERROR(EINVAL);
|
||||||
|
} else if (state == new_set && *p == ' ') {
|
||||||
p++;
|
p++;
|
||||||
continue;
|
continue;
|
||||||
} else if (state == new_set && !strncmp(p, "id=", 3)) {
|
} else if (state == new_set && !strncmp(p, "id=", 3)) {
|
||||||
|
Reference in New Issue
Block a user