From aa5a51a47e474749c33ad81132ba54e19357e92a Mon Sep 17 00:00:00 2001 From: hupeng3 Date: Fri, 2 Sep 2022 16:00:18 +0800 Subject: Toast: Fix MotionEvent has too many PointerCoords If the MotionEvent has too many PointerCoords, it will lead to an infinite loop and cannot complete the operator<<. Bug:244248855 Test: printed MotionEvent in log to see the formatting Signed-off-by: hupeng3 Change-Id: Id4a01152bc4103976d3f60e69eb375e3d32669a0 --- libs/input/Input.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'libs') diff --git a/libs/input/Input.cpp b/libs/input/Input.cpp index 13ca9ecd35..4127f7ce10 100644 --- a/libs/input/Input.cpp +++ b/libs/input/Input.cpp @@ -929,6 +929,8 @@ std::ostream& operator<<(std::ostream& out, const MotionEvent& event) { out << ", actionButton=" << std::to_string(event.getActionButton()); } const size_t pointerCount = event.getPointerCount(); + LOG_ALWAYS_FATAL_IF(pointerCount > MAX_POINTERS, "Too many pointers : pointerCount = %zu", + pointerCount); for (size_t i = 0; i < pointerCount; i++) { out << ", id[" << i << "]=" << event.getPointerId(i); float x = event.getX(i); -- cgit v1.2.3-59-g8ed1b