diff --git a/include/binder/MemoryBase.h b/include/binder/MemoryBase.h index 463e26d97..fa0b8d17b 100644 --- a/include/binder/MemoryBase.h +++ b/include/binder/MemoryBase.h @@ -40,6 +40,9 @@ protected: const sp& getHeap() const { return mHeap; } private: + // Backwards compatibility for libdatabase_sqlcipher (http://b/8253769). + MemoryBase(const sp& heap, long offset, unsigned int size); + size_t mSize; ssize_t mOffset; sp mHeap; diff --git a/libs/binder/IMemory.cpp b/libs/binder/IMemory.cpp index cd2451a67..947ac1919 100644 --- a/libs/binder/IMemory.cpp +++ b/libs/binder/IMemory.cpp @@ -298,11 +298,11 @@ void BpMemoryHeap::assertReallyMapped() const uint32_t flags = reply.readInt32(); uint32_t offset = reply.readInt32(); - ALOGE_IF(err, "binder=%p transaction failed fd=%d, size=%ld, err=%d (%s)", + ALOGE_IF(err, "binder=%p transaction failed fd=%d, size=%d, err=%d (%s)", asBinder().get(), parcel_fd, size, err, strerror(-err)); int fd = dup( parcel_fd ); - ALOGE_IF(fd==-1, "cannot dup fd=%d, size=%ld, err=%d (%s)", + ALOGE_IF(fd==-1, "cannot dup fd=%d, size=%d, err=%d (%s)", parcel_fd, size, err, strerror(errno)); int access = PROT_READ; @@ -315,7 +315,7 @@ void BpMemoryHeap::assertReallyMapped() const mRealHeap = true; mBase = mmap(0, size, access, MAP_SHARED, fd, offset); if (mBase == MAP_FAILED) { - ALOGE("cannot map BpMemoryHeap (binder=%p), size=%ld, fd=%d (%s)", + ALOGE("cannot map BpMemoryHeap (binder=%p), size=%d, fd=%d (%s)", asBinder().get(), size, fd, strerror(errno)); close(fd); } else { diff --git a/libs/binder/MemoryBase.cpp b/libs/binder/MemoryBase.cpp index 033066bea..835124f51 100644 --- a/libs/binder/MemoryBase.cpp +++ b/libs/binder/MemoryBase.cpp @@ -14,6 +14,7 @@ * limitations under the License. */ +#define LOG_TAG "MemoryBase" #include #include @@ -31,6 +32,14 @@ MemoryBase::MemoryBase(const sp& heap, { } +MemoryBase::MemoryBase(const sp& heap, + long offset, unsigned int size) + : mSize(size), mOffset(offset), mHeap(heap) +{ + ALOGW("Using temporary compatibility workaround for usage of MemoryBase " + "private API. Please fix your application!"); +} + sp MemoryBase::getMemory(ssize_t* offset, size_t* size) const { if (offset) *offset = mOffset;