summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlanker <i@flanker017.me>2015-09-07 15:28:58 +0800
committerNick Kralevich <nnk@google.com>2015-10-20 12:28:15 -0700
commit5d17838adef13062717322e79d4db0b9bb6b2395 (patch)
tree9c1843b70587f232f51807d0a5fdb68d5042d04d
parentc1e6fbb52c3f85cc7610d1d07d12be38f70b4ed4 (diff)
downloadframeworks_native-5d17838adef13062717322e79d4db0b9bb6b2395.zip
frameworks_native-5d17838adef13062717322e79d4db0b9bb6b2395.tar.gz
frameworks_native-5d17838adef13062717322e79d4db0b9bb6b2395.tar.bz2
add number constraint for samples per MotionEvent
Bug:23905002 Signed-off-by: Adam Lesinski <adamlesinski@google.com> (cherry picked from commit 552a8a5d8df32f659b8d11311a244cdc6d3b7733) Change-Id: I9b7ea859889b7697bee4165a2746602212120543
-rw-r--r--include/input/Input.h5
-rw-r--r--libs/input/Input.cpp3
2 files changed, 7 insertions, 1 deletions
diff --git a/include/input/Input.h b/include/input/Input.h
index e778076..97101a7 100644
--- a/include/input/Input.h
+++ b/include/input/Input.h
@@ -82,6 +82,11 @@ enum {
#define MAX_POINTERS 16
/*
+ * Maximum number of samples supported per motion event.
+ */
+#define MAX_SAMPLES UINT16_MAX
+
+/*
* Maximum pointer id value supported in a motion event.
* Smallest pointer id is 0.
* (This is limited by our use of BitSet32 to track pointer assignments.)
diff --git a/libs/input/Input.cpp b/libs/input/Input.cpp
index 6f53996..83e241c 100644
--- a/libs/input/Input.cpp
+++ b/libs/input/Input.cpp
@@ -490,7 +490,8 @@ void MotionEvent::transform(const float matrix[9]) {
status_t MotionEvent::readFromParcel(Parcel* parcel) {
size_t pointerCount = parcel->readInt32();
size_t sampleCount = parcel->readInt32();
- if (pointerCount == 0 || pointerCount > MAX_POINTERS || sampleCount == 0) {
+ if (pointerCount == 0 || pointerCount > MAX_POINTERS ||
+ sampleCount == 0 || sampleCount > MAX_SAMPLES) {
return BAD_VALUE;
}