summaryrefslogtreecommitdiffstats
path: root/core
diff options
context:
space:
mode:
authorLeon Scroggins III <scroggo@google.com>2015-05-21 19:05:45 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2015-05-21 19:05:46 +0000
commitaba3ecb976cacd7c92fe8f8afae20d112781d68e (patch)
tree10975cc472f7e97f514bd3facb46d86bc0d0cf3c /core
parentbbb0ae13e2d1767dda1e0cf3e3546332d80379d2 (diff)
parent462dd010467fdf1ab0cb49e021a92d14f2163c8c (diff)
downloadframeworks_base-aba3ecb976cacd7c92fe8f8afae20d112781d68e.zip
frameworks_base-aba3ecb976cacd7c92fe8f8afae20d112781d68e.tar.gz
frameworks_base-aba3ecb976cacd7c92fe8f8afae20d112781d68e.tar.bz2
Merge "Fix overflow in NinePatchImpl." into mnc-dev
Diffstat (limited to 'core')
-rw-r--r--core/jni/android/graphics/NinePatchImpl.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/core/jni/android/graphics/NinePatchImpl.cpp b/core/jni/android/graphics/NinePatchImpl.cpp
index 323f832..978c4a5 100644
--- a/core/jni/android/graphics/NinePatchImpl.cpp
+++ b/core/jni/android/graphics/NinePatchImpl.cpp
@@ -180,7 +180,10 @@ void NinePatch_Draw(SkCanvas* canvas, const SkRect& bounds,
const int bitmapWidth = bitmap.width();
const int bitmapHeight = bitmap.height();
- SkScalar* dstRights = (SkScalar*) alloca((numXDivs + 1) * sizeof(SkScalar));
+ // Number of bytes needed for dstRights array.
+ // Need to cast numXDivs to a larger type to avoid overflow.
+ const size_t dstBytes = ((size_t) numXDivs + 1) * sizeof(SkScalar);
+ SkScalar* dstRights = (SkScalar*) alloca(dstBytes);
bool dstRightsHaveBeenCached = false;
int numStretchyXPixelsRemaining = 0;