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
|
// 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
|
// atom following, but in practice are only utf-8 or utf-16, distinguished
|
||||||
// instead by the presence of a BOM
|
// instead by the presence of a BOM
|
||||||
ch = avio_rb16(sc->pb);
|
if (!len) {
|
||||||
if (ch == 0xfeff)
|
title[0] = 0;
|
||||||
avio_get_str16be(sc->pb, len, title, title_len);
|
} else {
|
||||||
else if (ch == 0xfffe)
|
ch = avio_rb16(sc->pb);
|
||||||
avio_get_str16le(sc->pb, len, title, title_len);
|
if (ch == 0xfeff)
|
||||||
else {
|
avio_get_str16be(sc->pb, len, title, title_len);
|
||||||
AV_WB16(title, ch);
|
else if (ch == 0xfffe)
|
||||||
avio_get_str(sc->pb, len - 2, title + 2, title_len - 2);
|
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);
|
ff_new_chapter(s, i, st->time_base, sample->timestamp, end, title);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user