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/cue.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'demux/cue.c') diff --git a/demux/cue.c b/demux/cue.c index d72e84249b..50ce4b7639 100644 --- a/demux/cue.c +++ b/demux/cue.c @@ -218,3 +218,18 @@ struct cue_file *mp_parse_cue(struct bstr data) return f; } + +int mp_check_embedded_cue(struct cue_file *f) +{ + char *fn0 = f->tracks[0].filename; + for (int n = 1; n < f->num_tracks; n++) { + char *fn = f->tracks[n].filename; + // both filenames have the same address (including NULL) + if (fn0 == fn) + continue; + // only one filename is NULL, or the strings don't match + if (!fn0 || !fn || strcmp(fn0, fn) != 0) + return -1; + } + return 0; +} -- cgit v1.2.3