diff options
author | Wei Jia <wjia@google.com> | 2015-06-10 22:59:00 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-06-10 22:59:00 +0000 |
commit | c98f2a0aa96c07aae6218e9e804ab18e9b50de3e (patch) | |
tree | bc27d9ab6ceffab71c294b02a35c4ab2c48f49a4 | |
parent | 10441a6f3066d9ce279c478062a35a7e4e236e73 (diff) | |
parent | e0095a19666afbab36dd0e8e4544e7f4ec9f890c (diff) | |
download | frameworks_av-c98f2a0aa96c07aae6218e9e804ab18e9b50de3e.zip frameworks_av-c98f2a0aa96c07aae6218e9e804ab18e9b50de3e.tar.gz frameworks_av-c98f2a0aa96c07aae6218e9e804ab18e9b50de3e.tar.bz2 |
am e0095a19: am 86174e2c: Merge "Prevent reading past the end of the buffer in 3GPP" into lmp-dev
* commit 'e0095a19666afbab36dd0e8e4544e7f4ec9f890c':
Prevent reading past the end of the buffer in 3GPP
-rw-r--r-- | media/libstagefright/MPEG4Extractor.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/media/libstagefright/MPEG4Extractor.cpp b/media/libstagefright/MPEG4Extractor.cpp index 58012b2..a1521de 100644 --- a/media/libstagefright/MPEG4Extractor.cpp +++ b/media/libstagefright/MPEG4Extractor.cpp @@ -2398,11 +2398,11 @@ status_t MPEG4Extractor::parseITunesMetaData(off64_t offset, size_t size) { } status_t MPEG4Extractor::parse3GPPMetaData(off64_t offset, size_t size, int depth) { - if (size < 4) { + if (size < 4 || size == SIZE_MAX) { return ERROR_MALFORMED; } - uint8_t *buffer = new (std::nothrow) uint8_t[size]; + uint8_t *buffer = new (std::nothrow) uint8_t[size + 1]; if (buffer == NULL) { return ERROR_MALFORMED; } @@ -2498,6 +2498,7 @@ status_t MPEG4Extractor::parse3GPPMetaData(off64_t offset, size_t size, int dept } if (isUTF8) { + buffer[size] = 0; mFileMetaData->setCString(metadataKey, (const char *)buffer + 6); } else { // Convert from UTF-16 string to UTF-8 string. |