summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/OggExtractor.cpp
diff options
context:
space:
mode:
authorChad Brubaker <cbrubaker@google.com>2015-10-07 15:42:11 -0700
committerSteve Kondik <steve@cyngn.com>2015-11-05 21:16:19 -0800
commitf9e8f2fcaad04776a93bc659a9d9017011fcb085 (patch)
tree997fe6a1a760616638073cb181f50bdc61ff4929 /media/libstagefright/OggExtractor.cpp
parentd30f25cb92942cfe58708666235dbdedfc604070 (diff)
downloadframeworks_av-f9e8f2fcaad04776a93bc659a9d9017011fcb085.zip
frameworks_av-f9e8f2fcaad04776a93bc659a9d9017011fcb085.tar.gz
frameworks_av-f9e8f2fcaad04776a93bc659a9d9017011fcb085.tar.bz2
Fix benign overflow in getTimeUsOfGranule
Bug: 24748446 Change-Id: I1f8e3927e9a8f646a0d804161924ae0dcc5ab75d
Diffstat (limited to 'media/libstagefright/OggExtractor.cpp')
-rw-r--r--media/libstagefright/OggExtractor.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/media/libstagefright/OggExtractor.cpp b/media/libstagefright/OggExtractor.cpp
index 578171f..5c81f1a 100644
--- a/media/libstagefright/OggExtractor.cpp
+++ b/media/libstagefright/OggExtractor.cpp
@@ -179,6 +179,9 @@ struct MyVorbisExtractor : public MyOggExtractor {
protected:
virtual int64_t getTimeUsOfGranule(uint64_t granulePos) const {
+ if (granulePos > INT64_MAX / 1000000ll) {
+ return INT64_MAX;
+ }
return granulePos * 1000000ll / mVi.rate;
}
@@ -917,6 +920,9 @@ int64_t MyOpusExtractor::getTimeUsOfGranule(uint64_t granulePos) const {
if (granulePos > mCodecDelay) {
pcmSamplePosition = granulePos - mCodecDelay;
}
+ if (pcmSamplePosition > INT64_MAX / 1000000ll) {
+ return INT64_MAX;
+ }
return pcmSamplePosition * 1000000ll / kOpusSampleRate;
}