From 5d17838adef13062717322e79d4db0b9bb6b2395 Mon Sep 17 00:00:00 2001 From: Flanker Date: Mon, 7 Sep 2015 15:28:58 +0800 Subject: [PATCH] add number constraint for samples per MotionEvent Bug:23905002 Signed-off-by: Adam Lesinski (cherry picked from commit 552a8a5d8df32f659b8d11311a244cdc6d3b7733) Change-Id: I9b7ea859889b7697bee4165a2746602212120543 --- include/input/Input.h | 5 +++++ libs/input/Input.cpp | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/include/input/Input.h b/include/input/Input.h index e77807634..97101a771 100644 --- a/include/input/Input.h +++ b/include/input/Input.h @@ -81,6 +81,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. diff --git a/libs/input/Input.cpp b/libs/input/Input.cpp index 6f53996b4..83e241c4e 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; }