summaryrefslogtreecommitdiffstats
path: root/media/libmedia/AudioTrack.cpp
diff options
context:
space:
mode:
authorDan Austin <danielaustin@google.com>2015-10-27 16:14:52 -0700
committerSteve Kondik <steve@cyngn.com>2015-11-05 21:16:19 -0800
commit90eadbb16b9d8bfef54e5a1b46e6106539b660de (patch)
tree7573e4723f4f9f3e95f23f670eb57ca318887920 /media/libmedia/AudioTrack.cpp
parent085729eae6112d5d73f3da39f66ca59bc0603218 (diff)
downloadframeworks_av-90eadbb16b9d8bfef54e5a1b46e6106539b660de.zip
frameworks_av-90eadbb16b9d8bfef54e5a1b46e6106539b660de.tar.gz
frameworks_av-90eadbb16b9d8bfef54e5a1b46e6106539b660de.tar.bz2
Refactor setPlaybackRate to avoid benign unsigned integer overflow.
There is a check that results in a benign unsigned integer overflow. This has been refactored to avoid the unsigned integer overflow. Bug: 25327431 Change-Id: Ib112a7cd585c680f13e4bee3d7e9f45da7d66f1d
Diffstat (limited to 'media/libmedia/AudioTrack.cpp')
-rw-r--r--media/libmedia/AudioTrack.cpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/media/libmedia/AudioTrack.cpp b/media/libmedia/AudioTrack.cpp
index 946c118..3a8dc07 100644
--- a/media/libmedia/AudioTrack.cpp
+++ b/media/libmedia/AudioTrack.cpp
@@ -842,13 +842,13 @@ status_t AudioTrack::setPlaybackRate(const AudioPlaybackRate &playbackRate)
}
// Check resampler ratios are within bounds
- if (effectiveRate > mSampleRate * AUDIO_RESAMPLER_DOWN_RATIO_MAX) {
+ if ((uint64_t)effectiveRate > (uint64_t)mSampleRate * (uint64_t)AUDIO_RESAMPLER_DOWN_RATIO_MAX) {
ALOGV("setPlaybackRate(%f, %f) failed. Resample rate exceeds max accepted value",
playbackRate.mSpeed, playbackRate.mPitch);
return BAD_VALUE;
}
- if (effectiveRate * AUDIO_RESAMPLER_UP_RATIO_MAX < mSampleRate) {
+ if ((uint64_t)effectiveRate * (uint64_t)AUDIO_RESAMPLER_UP_RATIO_MAX < (uint64_t)mSampleRate) {
ALOGV("setPlaybackRate(%f, %f) failed. Resample rate below min accepted value",
playbackRate.mSpeed, playbackRate.mPitch);
return BAD_VALUE;