diff options
-rw-r--r-- | libwebm/README.android | 2 | ||||
-rw-r--r-- | libwebm/mkvparser/mkvparser.cc | 9 |
2 files changed, 8 insertions, 3 deletions
diff --git a/libwebm/README.android b/libwebm/README.android index c55bd748f..e89a0ffc2 100644 --- a/libwebm/README.android +++ b/libwebm/README.android @@ -1,7 +1,7 @@ Name: libwebm URL: http://www.webmproject.org -Commit: 81de00c43ea3c087b48a8c20337db7531b9f7612 +Commit: 11cae244cc06c1295bffa9861c610dcde3b9da18 Description: Contains the sources used to compile libwebm's matroska parser. diff --git a/libwebm/mkvparser/mkvparser.cc b/libwebm/mkvparser/mkvparser.cc index ace65bd59..412e6a52c 100644 --- a/libwebm/mkvparser/mkvparser.cc +++ b/libwebm/mkvparser/mkvparser.cc @@ -5229,6 +5229,8 @@ bool Projection::Parse(IMkvReader* reader, long long start, long long size, projection_ptr->type = static_cast<ProjectionType>(projection_type); } else if (child_id == libwebm::kMkvProjectionPrivate) { + if (projection_ptr->private_data != NULL) + return false; unsigned char* data = SafeArrayAlloc<unsigned char>(1, child_size); if (data == NULL) @@ -5286,6 +5288,7 @@ VideoTrack::VideoTrack(Segment* pSegment, long long element_start, m_projection(NULL) {} VideoTrack::~VideoTrack() { + delete[] m_colour_space; delete m_colour; delete m_projection; } @@ -5307,7 +5310,7 @@ long VideoTrack::Parse(Segment* pSegment, const Info& info, long long stereo_mode = 0; double rate = 0.0; - char* colour_space = NULL; + std::unique_ptr<char[]> colour_space_ptr; IMkvReader* const pReader = pSegment->m_pReader; @@ -5384,9 +5387,11 @@ long VideoTrack::Parse(Segment* pSegment, const Info& info, projection_ptr.reset(projection); } } else if (id == libwebm::kMkvColourSpace) { + char* colour_space = NULL; const long status = UnserializeString(pReader, pos, size, colour_space); if (status < 0) return status; + colour_space_ptr.reset(colour_space); } pos += size; // consume payload @@ -5418,7 +5423,7 @@ long VideoTrack::Parse(Segment* pSegment, const Info& info, pTrack->m_stereo_mode = stereo_mode; pTrack->m_rate = rate; pTrack->m_colour = colour_ptr.release(); - pTrack->m_colour_space = colour_space; + pTrack->m_colour_space = colour_space_ptr.release(); pTrack->m_projection = projection_ptr.release(); pResult = pTrack; |