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

Commit 288f2ef6 authored by Colin Cross's avatar Colin Cross
Browse files

libui: fix passing Fence object over binder

The Fence object was writing a size_t into the binder buffer
in flatten, which changes size if the producer and consumer
are running in a 32-bit and a 64-bit process.  Use a uint32_t
instead.

Change-Id: Ifed526513800ce27f9d605101cddd922292cca37
parent 27f8840f
Loading
Loading
Loading
Loading
+2 −2
Original line number Original line Diff line number Diff line
@@ -138,7 +138,7 @@ status_t Fence::flatten(void*& buffer, size_t& size, int*& fds, size_t& count) c
    if (size < getFlattenedSize() || count < getFdCount()) {
    if (size < getFlattenedSize() || count < getFdCount()) {
        return NO_MEMORY;
        return NO_MEMORY;
    }
    }
    FlattenableUtils::write(buffer, size, getFdCount());
    FlattenableUtils::write(buffer, size, (uint32_t)getFdCount());
    if (isValid()) {
    if (isValid()) {
        *fds++ = mFenceFd;
        *fds++ = mFenceFd;
        count--;
        count--;
@@ -156,7 +156,7 @@ status_t Fence::unflatten(void const*& buffer, size_t& size, int const*& fds, si
        return NO_MEMORY;
        return NO_MEMORY;
    }
    }


    size_t numFds;
    uint32_t numFds;
    FlattenableUtils::read(buffer, size, numFds);
    FlattenableUtils::read(buffer, size, numFds);


    if (numFds > 1) {
    if (numFds > 1) {