Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f355bf98 authored by Siarhei Vishniakou's avatar Siarhei Vishniakou
Browse files

Reorder VerifiedKey/MotionEvent structs for hwasan

Now, the 'nsecs_t' fields of this struct will no longer be falling on
4-byte boundaries. This prevents a hwasan crash.

Bug: 209991446
Test: atest inputflinger_tests
Change-Id: If28c7ff66b9495a3d61f590464d2b995afbe0c2b
parent 0abd019f
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -945,8 +945,8 @@ struct __attribute__((__packed__)) VerifiedInputEvent {
 */
struct __attribute__((__packed__)) VerifiedKeyEvent : public VerifiedInputEvent {
    int32_t action;
    nsecs_t downTimeNanos;
    int32_t flags;
    nsecs_t downTimeNanos;
    int32_t keyCode;
    int32_t scanCode;
    int32_t metaState;
@@ -961,8 +961,8 @@ struct __attribute__((__packed__)) VerifiedMotionEvent : public VerifiedInputEve
    float rawX;
    float rawY;
    int32_t actionMasked;
    nsecs_t downTimeNanos;
    int32_t flags;
    nsecs_t downTimeNanos;
    int32_t metaState;
    int32_t buttonState;
};
+2 −2
Original line number Diff line number Diff line
@@ -192,8 +192,8 @@ VerifiedKeyEvent verifiedKeyEventFromKeyEvent(const KeyEvent& event) {
    return {{VerifiedInputEvent::Type::KEY, event.getDeviceId(), event.getEventTime(),
             event.getSource(), event.getDisplayId()},
            event.getAction(),
            event.getDownTime(),
            event.getFlags() & VERIFIED_KEY_EVENT_FLAGS,
            event.getDownTime(),
            event.getKeyCode(),
            event.getScanCode(),
            event.getMetaState(),
@@ -206,8 +206,8 @@ VerifiedMotionEvent verifiedMotionEventFromMotionEvent(const MotionEvent& event)
            event.getRawX(0),
            event.getRawY(0),
            event.getActionMasked(),
            event.getDownTime(),
            event.getFlags() & VERIFIED_MOTION_EVENT_FLAGS,
            event.getDownTime(),
            event.getMetaState(),
            event.getButtonState()};
}
+2 −2
Original line number Diff line number Diff line
@@ -32,8 +32,8 @@ VerifiedKeyEvent verifiedKeyEventFromKeyEntry(const KeyEntry& entry) {
    return {{VerifiedInputEvent::Type::KEY, entry.deviceId, entry.eventTime, entry.source,
             entry.displayId},
            entry.action,
            entry.downTime,
            entry.flags & VERIFIED_KEY_EVENT_FLAGS,
            entry.downTime,
            entry.keyCode,
            entry.scanCode,
            entry.metaState,
@@ -50,8 +50,8 @@ VerifiedMotionEvent verifiedMotionEventFromMotionEntry(const MotionEntry& entry,
            rawXY.x,
            rawXY.y,
            actionMasked,
            entry.downTime,
            entry.flags & VERIFIED_MOTION_EVENT_FLAGS,
            entry.downTime,
            entry.metaState,
            entry.buttonState};
}
+3 −3
Original line number Diff line number Diff line
@@ -3145,8 +3145,8 @@ TEST_F(InputDispatcherTest, VerifyInputEvent_KeyEvent) {
    const VerifiedKeyEvent& verifiedKey = static_cast<const VerifiedKeyEvent&>(*verified);

    ASSERT_EQ(keyArgs.action, verifiedKey.action);
    ASSERT_EQ(keyArgs.downTime, verifiedKey.downTimeNanos);
    ASSERT_EQ(keyArgs.flags & VERIFIED_KEY_EVENT_FLAGS, verifiedKey.flags);
    ASSERT_EQ(keyArgs.downTime, verifiedKey.downTimeNanos);
    ASSERT_EQ(keyArgs.keyCode, verifiedKey.keyCode);
    ASSERT_EQ(keyArgs.scanCode, verifiedKey.scanCode);
    ASSERT_EQ(keyArgs.metaState, verifiedKey.metaState);
@@ -3194,8 +3194,8 @@ TEST_F(InputDispatcherTest, VerifyInputEvent_MotionEvent) {
    EXPECT_EQ(rawXY.x, verifiedMotion.rawX);
    EXPECT_EQ(rawXY.y, verifiedMotion.rawY);
    EXPECT_EQ(motionArgs.action & AMOTION_EVENT_ACTION_MASK, verifiedMotion.actionMasked);
    EXPECT_EQ(motionArgs.downTime, verifiedMotion.downTimeNanos);
    EXPECT_EQ(motionArgs.flags & VERIFIED_MOTION_EVENT_FLAGS, verifiedMotion.flags);
    EXPECT_EQ(motionArgs.downTime, verifiedMotion.downTimeNanos);
    EXPECT_EQ(motionArgs.metaState, verifiedMotion.metaState);
    EXPECT_EQ(motionArgs.buttonState, verifiedMotion.buttonState);
}
@@ -4179,7 +4179,7 @@ protected:
        }
    }

    void touchAndAssertPositions(int32_t action, std::vector<PointF> touchedPoints,
    void touchAndAssertPositions(int32_t action, const std::vector<PointF>& touchedPoints,
                                 std::vector<PointF> expectedPoints) {
        NotifyMotionArgs motionArgs = generateMotionArgs(action, AINPUT_SOURCE_TOUCHSCREEN,
                                                         ADISPLAY_ID_DEFAULT, touchedPoints);