OSDN Git Service

add number constraint for samples per MotionEvent
authorFlanker <i@flanker017.me>
Mon, 7 Sep 2015 07:28:58 +0000 (15:28 +0800)
committerNick Kralevich <nnk@google.com>
Tue, 20 Oct 2015 19:28:15 +0000 (12:28 -0700)
Bug:23905002

Signed-off-by: Adam Lesinski <adamlesinski@google.com>
(cherry picked from commit 552a8a5d8df32f659b8d11311a244cdc6d3b7733)

Change-Id: I9b7ea859889b7697bee4165a2746602212120543

include/input/Input.h
libs/input/Input.cpp

index e778076..97101a7 100644 (file)
@@ -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.)
index 6f53996..83e241c 100644 (file)
@@ -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;
     }