diff options
author | Kacper Michajłow <kasper93@gmail.com> | 2024-01-28 04:19:36 +0100 |
---|---|---|
committer | Dudemanguy <random342@airmail.cc> | 2024-02-15 16:43:37 +0000 |
commit | 5e54a871c5e38225a3575c92196b1355f7744f1b (patch) | |
tree | ef5551ba4ec28033033e3035f90afb3b2b4c869f | |
parent | 4419e5c41b5f979d73b79912833ad1f4ac19dd7a (diff) | |
download | mpv-5e54a871c5e38225a3575c92196b1355f7744f1b.tar.bz2 mpv-5e54a871c5e38225a3575c92196b1355f7744f1b.tar.xz |
demux_mkv: error if needed compression settings were not found
Mode 3 is header stripping and we need ContentCompSettings to
reconstruct the data.
Found by fuzzing.
-rw-r--r-- | demux/demux_mkv.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/demux/demux_mkv.c b/demux/demux_mkv.c index 3b37c863ac..50f4c78b25 100644 --- a/demux/demux_mkv.c +++ b/demux/demux_mkv.c @@ -390,6 +390,10 @@ static bstr demux_mkv_decode(struct mp_log *log, mkv_track_t *track, } size = dstlen - out_avail; } else if (enc->comp_algo == 3) { + if (enc->comp_settings_len == 0 || !enc->comp_settings) { + mp_warn(log, "missing comp_settings, unable to reconstruct the data.\n"); + goto error; + } dest = talloc_size(track->parser_tmp, size + enc->comp_settings_len); memcpy(dest, enc->comp_settings, enc->comp_settings_len); memcpy(dest + enc->comp_settings_len, src, size); |