From 828a952c9aa2d2f1427e1f21a6c1202c2191e5a9 Mon Sep 17 00:00:00 2001 From: Ben Boeckel Date: Thu, 26 Sep 2013 02:22:06 -0400 Subject: matroska: fix uninitialized memory accesses with ordered chapters There is uninitialized memory access if the actual size isn't passed along. In the worst case, this can cause a source to be loaded against the uninitialized memory, causing a false count of found versus required sources, preventing the "Failed to find ordered chapter part" message. --- demux/demux.h | 1 + demux/demux_mkv.c | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'demux') diff --git a/demux/demux.h b/demux/demux.h index c42c964fa9..af8766ec22 100644 --- a/demux/demux.h +++ b/demux/demux.h @@ -148,6 +148,7 @@ typedef struct demux_attachment } demux_attachment_t; struct demuxer_params { + int matroska_num_wanted_uids; unsigned char (*matroska_wanted_uids)[16]; int matroska_wanted_segment; bool *matroska_was_valid; diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c index 03ffc84844..fec2e223d0 100644 --- a/demux/demux_mkv.c +++ b/demux/demux_mkv.c @@ -394,7 +394,7 @@ static int demux_mkv_read_info(demuxer_t *demuxer) unsigned char (*uids)[16] = demuxer->params->matroska_wanted_uids; if (!info.n_segment_uid) uids = NULL; - for (int i = 0; i < MP_TALLOC_ELEMS(uids); i++) { + for (int i = 0; i < demuxer->params->matroska_num_wanted_uids; i++) { if (!memcmp(info.segment_uid.start, uids[i], 16)) goto out; } -- cgit v1.2.3