summaryrefslogtreecommitdiff
path: root/libavformat/mpl2dec.c
diff options
context:
space:
mode:
authorPaul B Mahol <onemda@gmail.com>2017-02-11 11:47:22 +0100
committerPaul B Mahol <onemda@gmail.com>2017-02-21 10:16:20 +0100
commit74267333a10e0be4355221d7be22dab73bd7184c (patch)
tree2fb1156c28dd22e6982ce4c78f5e5269e6f79190 /libavformat/mpl2dec.c
parenta5c1c7a8b3d13c86b453558628951c3f52054ab4 (diff)
avformat/mpl2dec: skip BOM when probing
Fixes #5442. Signed-off-by: Paul B Mahol <onemda@gmail.com>
Diffstat (limited to 'libavformat/mpl2dec.c')
-rw-r--r--libavformat/mpl2dec.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/libavformat/mpl2dec.c b/libavformat/mpl2dec.c
index 59589d5b5e..dfcdf5a564 100644
--- a/libavformat/mpl2dec.c
+++ b/libavformat/mpl2dec.c
@@ -23,6 +23,8 @@
* MPL2 subtitles format demuxer
*/
+#include "libavutil/intreadwrite.h"
+
#include "avformat.h"
#include "internal.h"
#include "subtitles.h"
@@ -39,6 +41,9 @@ static int mpl2_probe(AVProbeData *p)
const unsigned char *ptr = p->buf;
const unsigned char *ptr_end = ptr + p->buf_size;
+ if (AV_RB24(ptr) == 0xefbbbf)
+ ptr += 3;
+
for (i = 0; i < 2; i++) {
if (sscanf(ptr, "[%"SCNd64"][%"SCNd64"]%c", &start, &end, &c) != 3 &&
sscanf(ptr, "[%"SCNd64"][]%c", &start, &c) != 2)
@@ -83,6 +88,9 @@ static int mpl2_read_header(AVFormatContext *s)
st->codecpar->codec_type = AVMEDIA_TYPE_SUBTITLE;
st->codecpar->codec_id = AV_CODEC_ID_MPL2;
+ if (avio_rb24(s->pb) != 0xefbbbf)
+ avio_seek(s->pb, -3, SEEK_CUR);
+
while (!avio_feof(s->pb)) {
char line[4096];
char *p = line;