mov: Prevent illegal writes when chapter titles are very short.
This commit is contained in:
parent
f492df0927
commit
8fb22c3d47
@ -2369,14 +2369,21 @@ static void mov_read_chapters(AVFormatContext *s)
|
||||
// The samples could theoretically be in any encoding if there's an encd
|
||||
// atom following, but in practice are only utf-8 or utf-16, distinguished
|
||||
// instead by the presence of a BOM
|
||||
ch = avio_rb16(sc->pb);
|
||||
if (ch == 0xfeff)
|
||||
avio_get_str16be(sc->pb, len, title, title_len);
|
||||
else if (ch == 0xfffe)
|
||||
avio_get_str16le(sc->pb, len, title, title_len);
|
||||
else {
|
||||
AV_WB16(title, ch);
|
||||
avio_get_str(sc->pb, len - 2, title + 2, title_len - 2);
|
||||
if (!len) {
|
||||
title[0] = 0;
|
||||
} else {
|
||||
ch = avio_rb16(sc->pb);
|
||||
if (ch == 0xfeff)
|
||||
avio_get_str16be(sc->pb, len, title, title_len);
|
||||
else if (ch == 0xfffe)
|
||||
avio_get_str16le(sc->pb, len, title, title_len);
|
||||
else {
|
||||
AV_WB16(title, ch);
|
||||
if (len == 1 || len == 2)
|
||||
title[len] = '0';
|
||||
else
|
||||
avio_get_str(sc->pb, len - 2, title + 2, title_len - 2);
|
||||
}
|
||||
}
|
||||
|
||||
ff_new_chapter(s, i, st->time_base, sample->timestamp, end, title);
|
||||
|
Loading…
x
Reference in New Issue
Block a user