From 44f5ce64b17deea4694f674352299c43d18b09a7 Mon Sep 17 00:00:00 2001 From: Tom Finegan Date: Thu, 20 Aug 2015 15:52:13 -0700 Subject: [PATCH] mkvparser: Disallow durations in seconds greater than LONG_LONG_MAX. libwebm cannot handle a duration in seconds greater than LONG_LONG_MAX because it stores the values in long long variables. BUG=23321923 Change-Id: Idb73f04a73e35829ae34386ea6c388fd355dd102 --- mkvparser.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/mkvparser.cpp b/mkvparser.cpp index 6132d09..2fb553d 100644 --- a/mkvparser.cpp +++ b/mkvparser.cpp @@ -3970,7 +3970,13 @@ long SegmentInfo::Parse() { assert(pos <= stop); } + const double rollover_check = m_duration * m_timecodeScale; + if (rollover_check > LONG_LONG_MAX) + return E_FILE_FORMAT_INVALID; + assert(pos == stop); + if (pos != stop) + return E_FILE_FORMAT_INVALID; return 0; }