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

Commit 1f8749f2 authored by Chad Brubaker's avatar Chad Brubaker Committed by Gerrit Code Review
Browse files

Merge changes I6b9963d0,Ia4537f5b,I9e018974

* changes:
  Enable integer overflow detection in libmedia
  Fix benign overflow in ClientProxy::getMisalignment
  Fix benign unsigned overflow in AudioTrack
parents 7cac3edc 0d9f5a12
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -83,6 +83,9 @@ LOCAL_C_INCLUDES := \
    $(call include-path-for, audio-effects) \
    $(call include-path-for, audio-utils)

LOCAL_CLANG := true
LOCAL_SANITIZE := signed-integer-overflow unsigned-integer-overflow

include $(BUILD_SHARED_LIBRARY)

include $(CLEAR_VARS)
+3 −3
Original line number Diff line number Diff line
@@ -2018,9 +2018,9 @@ status_t AudioTrack::getTimestamp(AudioTimestamp& timestamp)
        // Convert timestamp position from server time base to client time base.
        // TODO The following code should work OK now because timestamp.mPosition is 32-bit.
        // But if we change it to 64-bit then this could fail.
        // If (mPosition - mServer) can be negative then should use:
        //   (int32_t)(mPosition - mServer)
        timestamp.mPosition += mPosition - mServer;
        // Split this out instead of using += to prevent unsigned overflow
        // checks in the outer sum.
        timestamp.mPosition = timestamp.mPosition + static_cast<int32_t>(mPosition) - mServer;
        // Immediately after a call to getPosition_l(), mPosition and
        // mServer both represent the same frame position.  mPosition is
        // in client's point of view, and mServer is in server's point of
+1 −0
Original line number Diff line number Diff line
@@ -324,6 +324,7 @@ void ClientProxy::interrupt()
    }
}

__attribute__((no_sanitize("integer")))
size_t ClientProxy::getMisalignment()
{
    audio_track_cblk_t* cblk = mCblk;