summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Yeabkal Wubshit <yeabkal@google.com> 2023-07-21 19:11:52 -0700
committer Yeabkal Wubshit <yeabkal@google.com> 2023-07-24 08:38:17 -0700
commitd9c4008a731999a141faa518b42fc3385c5540f6 (patch)
treef11be5a91180328e2d06bc701b41ddd23c1ca78e
parent6d8c1c79f3f0444d825ab178b74d98999c41f3cd (diff)
Improve VelocityTracker bad pointer ID crash log
This helps developers better understand the crash cause when crashes are caused by bad pointer IDs given to VelocityTracker Bug: 292300437 Test: atest libinput_tests Change-Id: I3108f5b378ed2d9e92102cc7b38045058e02ec1f
-rw-r--r--libs/input/VelocityTracker.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/libs/input/VelocityTracker.cpp b/libs/input/VelocityTracker.cpp
index 87c7768f25..8704eee73d 100644
--- a/libs/input/VelocityTracker.cpp
+++ b/libs/input/VelocityTracker.cpp
@@ -16,10 +16,11 @@
#define LOG_TAG "VelocityTracker"
-#include <array>
+#include <android-base/logging.h>
#include <inttypes.h>
#include <limits.h>
#include <math.h>
+#include <array>
#include <optional>
#include <input/PrintTools.h>
@@ -243,6 +244,11 @@ void VelocityTracker::clearPointer(int32_t pointerId) {
void VelocityTracker::addMovement(nsecs_t eventTime, int32_t pointerId, int32_t axis,
float position) {
+ if (pointerId < 0 || pointerId > MAX_POINTER_ID) {
+ LOG(FATAL) << "Invalid pointer ID " << pointerId << " for axis "
+ << MotionEvent::getLabel(axis);
+ }
+
if (mCurrentPointerIdBits.hasBit(pointerId) &&
std::chrono::nanoseconds(eventTime - mLastEventTime) > ASSUME_POINTER_STOPPED_TIME) {
ALOGD_IF(DEBUG_VELOCITY, "VelocityTracker: stopped for %s, clearing state.",