diff options
author | Ricardo Cerqueira <ricardo@cyngn.com> | 2015-11-03 23:35:37 +0000 |
---|---|---|
committer | Ricardo Cerqueira <ricardo@cyngn.com> | 2015-11-03 23:35:37 +0000 |
commit | 2a4d9df8c969213f1942ea9f116293adbf41e2d3 (patch) | |
tree | ce8e8abdda03b1ed087b1bbfa88032159991af6a /media/libmedia/ICrypto.cpp | |
parent | bdf2ad577d53139ec69e44b9cc8b8b90f8be330b (diff) | |
parent | 02103bb21c90abdca4e4ba91f7e3e007a82e01fd (diff) | |
download | frameworks_av-2a4d9df8c969213f1942ea9f116293adbf41e2d3.zip frameworks_av-2a4d9df8c969213f1942ea9f116293adbf41e2d3.tar.gz frameworks_av-2a4d9df8c969213f1942ea9f116293adbf41e2d3.tar.bz2 |
Merge tag 'android-6.0.0_r5' into HEAD
Android 6.0.0 release 5
Conflicts:
media/libstagefright/OggExtractor.cpp
media/libstagefright/Utils.cpp
Change-Id: I2ea44836c5cc3da8ffa2092522293c433bf7538c
Diffstat (limited to 'media/libmedia/ICrypto.cpp')
-rw-r--r-- | media/libmedia/ICrypto.cpp | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/media/libmedia/ICrypto.cpp b/media/libmedia/ICrypto.cpp index 8f05936..53b105d 100644 --- a/media/libmedia/ICrypto.cpp +++ b/media/libmedia/ICrypto.cpp @@ -308,7 +308,25 @@ status_t BnCrypto::onTransact( AString errorDetailMsg; ssize_t result; - if (offset + totalSize > sharedBuffer->size()) { + size_t sumSubsampleSizes = 0; + bool overflow = false; + for (int32_t i = 0; i < numSubSamples; ++i) { + CryptoPlugin::SubSample &ss = subSamples[i]; + if (sumSubsampleSizes <= SIZE_MAX - ss.mNumBytesOfEncryptedData) { + sumSubsampleSizes += ss.mNumBytesOfEncryptedData; + } else { + overflow = true; + } + if (sumSubsampleSizes <= SIZE_MAX - ss.mNumBytesOfClearData) { + sumSubsampleSizes += ss.mNumBytesOfClearData; + } else { + overflow = true; + } + } + + if (overflow || sumSubsampleSizes != totalSize) { + result = -EINVAL; + } else if (offset + totalSize > sharedBuffer->size()) { result = -EINVAL; } else { result = decrypt( |