summaryrefslogtreecommitdiffstats
path: root/media/libmedia
diff options
context:
space:
mode:
authorChad Brubaker <cbrubaker@google.com>2015-09-23 16:21:54 -0700
committerSteve Kondik <steve@cyngn.com>2015-12-07 18:45:16 -0800
commit56b6cf5b7f5648ab071bd24136006b9d84066005 (patch)
treeafd7cea4ea873ec5b88b87abd1eff3aa0ac85a67 /media/libmedia
parentc0bad787f59f9b3c4a15819461867a7997e6d5e3 (diff)
downloadframeworks_av-56b6cf5b7f5648ab071bd24136006b9d84066005.zip
frameworks_av-56b6cf5b7f5648ab071bd24136006b9d84066005.tar.gz
frameworks_av-56b6cf5b7f5648ab071bd24136006b9d84066005.tar.bz2
Fix benign overflow in ToneGenerator.cpp
while (count--) causes an unsigned overflow when count = 0, refactor the condition to avoid this. Change-Id: I91a8c93e6be715d80070a4c94c1de712cb659265
Diffstat (limited to 'media/libmedia')
-rw-r--r--media/libmedia/ToneGenerator.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/media/libmedia/ToneGenerator.cpp b/media/libmedia/ToneGenerator.cpp
index 53b229e..d738ea7 100644
--- a/media/libmedia/ToneGenerator.cpp
+++ b/media/libmedia/ToneGenerator.cpp
@@ -1586,7 +1586,8 @@ void ToneGenerator::WaveGenerator::getSamples(short *outBuffer,
}
long dec = lAmplitude/count;
// loop generation
- while (count--) {
+ while (count) {
+ count--;
Sample = ((lA1 * lS1) >> S_Q14) - lS2;
// shift delay
lS2 = lS1;
@@ -1597,7 +1598,8 @@ void ToneGenerator::WaveGenerator::getSamples(short *outBuffer,
}
} else {
// loop generation
- while (count--) {
+ while (count) {
+ count--;
Sample = ((lA1 * lS1) >> S_Q14) - lS2;
// shift delay
lS2 = lS1;