diff options
author | android-build-team Robot <android-build-team-robot@google.com> | 2019-05-30 03:12:05 +0000 |
---|---|---|
committer | android-build-team Robot <android-build-team-robot@google.com> | 2019-05-30 03:12:05 +0000 |
commit | 851e2d8aeea80fb4f8c4cb7389624c48474ae663 (patch) | |
tree | 100376581a771bdadfc96c31582d5e5e649bb8bb | |
parent | 40adaac98114a6382614aeea74cb6791f69d5aca (diff) | |
parent | 816f8ee1420e28553faafbf9b008d6086670e758 (diff) | |
download | libvpx-851e2d8aeea80fb4f8c4cb7389624c48474ae663.tar.gz |
Snap for 5616725 from 816f8ee1420e28553faafbf9b008d6086670e758 to qt-qpr1-release
Change-Id: Iffd4e65c29a78aa6415b1e0d4d311dece3948228
-rw-r--r-- | libwebm/README.android | 2 | ||||
-rw-r--r-- | libwebm/mkvparser/mkvparser.cc | 29 | ||||
-rw-r--r-- | libwebm/mkvparser/mkvparser.h | 2 |
3 files changed, 25 insertions, 8 deletions
diff --git a/libwebm/README.android b/libwebm/README.android index 37b839a12..c55bd748f 100644 --- a/libwebm/README.android +++ b/libwebm/README.android @@ -1,7 +1,7 @@ Name: libwebm URL: http://www.webmproject.org -Commit: 8e1ae495138b578f4e144fc22d6872eacf07d11f +Commit: 81de00c43ea3c087b48a8c20337db7531b9f7612 Description: Contains the sources used to compile libwebm's matroska parser. diff --git a/libwebm/mkvparser/mkvparser.cc b/libwebm/mkvparser/mkvparser.cc index 5a7b89652..ace65bd59 100644 --- a/libwebm/mkvparser/mkvparser.cc +++ b/libwebm/mkvparser/mkvparser.cc @@ -4230,6 +4230,7 @@ long ContentEncoding::ParseContentEncodingEntry(long long start, long long size, new (std::nothrow) ContentEncryption*[encryption_count]; if (!encryption_entries_) { delete[] compression_entries_; + compression_entries_ = NULL; return -1; } encryption_entries_end_ = encryption_entries_; @@ -4261,6 +4262,7 @@ long ContentEncoding::ParseContentEncodingEntry(long long start, long long size, delete compression; return status; } + assert(compression_count > 0); *compression_entries_end_++ = compression; } else if (id == libwebm::kMkvContentEncryption) { ContentEncryption* const encryption = @@ -4273,6 +4275,7 @@ long ContentEncoding::ParseContentEncodingEntry(long long start, long long size, delete encryption; return status; } + assert(encryption_count > 0); *encryption_entries_end_++ = encryption; } @@ -4325,6 +4328,12 @@ long ContentEncoding::ParseCompressionEntry(long long start, long long size, return status; } + // There should be only one settings element per content compression. + if (compression->settings != NULL) { + delete[] buf; + return E_FILE_FORMAT_INVALID; + } + compression->settings = buf; compression->settings_len = buflen; } @@ -5311,8 +5320,8 @@ long VideoTrack::Parse(Segment* pSegment, const Info& info, const long long stop = pos + s.size; - Colour* colour = NULL; - Projection* projection = NULL; + std::unique_ptr<Colour> colour_ptr; + std::unique_ptr<Projection> projection_ptr; while (pos < stop) { long long id, size; @@ -5361,11 +5370,19 @@ long VideoTrack::Parse(Segment* pSegment, const Info& info, if (rate <= 0) return E_FILE_FORMAT_INVALID; } else if (id == libwebm::kMkvColour) { - if (!Colour::Parse(pReader, pos, size, &colour)) + Colour* colour = NULL; + if (!Colour::Parse(pReader, pos, size, &colour)) { return E_FILE_FORMAT_INVALID; + } else { + colour_ptr.reset(colour); + } } else if (id == libwebm::kMkvProjection) { - if (!Projection::Parse(pReader, pos, size, &projection)) + Projection* projection = NULL; + if (!Projection::Parse(pReader, pos, size, &projection)) { return E_FILE_FORMAT_INVALID; + } else { + projection_ptr.reset(projection); + } } else if (id == libwebm::kMkvColourSpace) { const long status = UnserializeString(pReader, pos, size, colour_space); if (status < 0) @@ -5400,9 +5417,9 @@ long VideoTrack::Parse(Segment* pSegment, const Info& info, pTrack->m_display_unit = display_unit; pTrack->m_stereo_mode = stereo_mode; pTrack->m_rate = rate; - pTrack->m_colour = colour; + pTrack->m_colour = colour_ptr.release(); pTrack->m_colour_space = colour_space; - pTrack->m_projection = projection; + pTrack->m_projection = projection_ptr.release(); pResult = pTrack; return 0; // success diff --git a/libwebm/mkvparser/mkvparser.h b/libwebm/mkvparser/mkvparser.h index 9f296ed82..848d01f03 100644 --- a/libwebm/mkvparser/mkvparser.h +++ b/libwebm/mkvparser/mkvparser.h @@ -527,7 +527,7 @@ class VideoTrack : public Track { Projection* GetProjection() const; - const char* GetColourSpace() const { return m_colour_space; }; + const char* GetColourSpace() const { return m_colour_space; } private: long long m_width; |