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

Commit f3199c22 authored by Christopher Tate's avatar Christopher Tate Committed by The Android Automerger
Browse files

Sanity check IMemory access versus underlying mmap

Bug 26877992

Change-Id: Ibbf4b1061e4675e4e96bc944a865b53eaf6984fe
parent 85d253fa
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@
#include <sys/mman.h>

#include <binder/IMemory.h>
#include <cutils/log.h>
#include <utils/KeyedVector.h>
#include <utils/threads.h>
#include <utils/Atomic.h>
@@ -187,15 +188,26 @@ sp<IMemoryHeap> BpMemory::getMemory(ssize_t* offset, size_t* size) const
            if (heap != 0) {
                mHeap = interface_cast<IMemoryHeap>(heap);
                if (mHeap != 0) {
                    size_t heapSize = mHeap->getSize();
                    if (s <= heapSize
                            && o >= 0
                            && (static_cast<size_t>(o) <= heapSize - s)) {
                        mOffset = o;
                        mSize = s;
                    } else {
                        // Hm.
                        android_errorWriteWithInfoLog(0x534e4554,
                            "26877992", -1, NULL, 0);
                        mOffset = 0;
                        mSize = 0;
                    }
                }
            }
        }
    }
    if (offset) *offset = mOffset;
    if (size) *size = mSize;
    return mHeap;
    return (mSize > 0) ? mHeap : 0;
}

// ---------------------------------------------------------------------------