From 7137afeb2c466135ab0e01ee0f9cbd2abd000563 Mon Sep 17 00:00:00 2001 From: Kevin Mitchell Date: Thu, 17 Dec 2015 01:40:31 -0800 Subject: demux: check embedded cuesheet refers to only one file If someone was "clever" enough to embed a cuesheet referencing multiple files, mpv would create a bunch of nonsense chapter markers. --- demux/demux.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'demux/demux.c') diff --git a/demux/demux.c b/demux/demux.c index dcad692be5..972bf31bae 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -926,10 +926,15 @@ static void demux_init_cuesheet(struct demuxer *demuxer) if (cue && !demuxer->num_chapters) { struct cue_file *f = mp_parse_cue(bstr0(cue)); if (f) { - for (int n = 0; n < f->num_tracks; n++) { - struct cue_track *t = &f->tracks[n]; - int idx = demuxer_add_chapter(demuxer, "", t->start, -1); - mp_tags_merge(demuxer->chapters[idx].metadata, t->tags); + if (mp_check_embedded_cue(f) < 0) { + MP_WARN(demuxer, "Embedded cue sheet references more than one file. " + "Ignoring it.\n"); + } else { + for (int n = 0; n < f->num_tracks; n++) { + struct cue_track *t = &f->tracks[n]; + int idx = demuxer_add_chapter(demuxer, "", t->start, -1); + mp_tags_merge(demuxer->chapters[idx].metadata, t->tags); + } } } talloc_free(f); -- cgit v1.2.3