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

Commit f851e5a9 authored by Pawin Vongmasa's avatar Pawin Vongmasa
Browse files

Handle nullptr from mapMemory properly

Test: make cts -j123 && cts-tradefed run cts-dev --module \
CtsMediaTestCases --compatibility:module-arg \
CtsMediaTestCases:include-annotation:\
android.platform.test.annotations.RequiresDevice

Bug: 38385699
Change-Id: Ib42492f9d9d162493e565d6d0071cc2a184fb476
parent d4ef5f1e
Loading
Loading
Loading
Loading
+6 −1
Original line number Original line Diff line number Diff line
@@ -960,7 +960,9 @@ status_t ACodec::allocateBuffersOnPort(OMX_U32 portIndex) {
                            return NO_MEMORY;
                            return NO_MEMORY;
                        }
                        }
                        hidlMem = mapMemory(hidlMemToken);
                        hidlMem = mapMemory(hidlMemToken);

                        if (hidlMem == nullptr) {
                            return NO_MEMORY;
                        }
                        err = mOMXNode->useBuffer(
                        err = mOMXNode->useBuffer(
                                portIndex, hidlMemToken, &info.mBufferID);
                                portIndex, hidlMemToken, &info.mBufferID);
                    } else {
                    } else {
@@ -1008,6 +1010,9 @@ status_t ACodec::allocateBuffersOnPort(OMX_U32 portIndex) {
                                return NO_MEMORY;
                                return NO_MEMORY;
                            }
                            }
                            hidlMem = mapMemory(hidlMemToken);
                            hidlMem = mapMemory(hidlMemToken);
                            if (hidlMem == nullptr) {
                                return NO_MEMORY;
                            }
                            info.mData = new SharedMemoryBuffer(format, hidlMem);
                            info.mData = new SharedMemoryBuffer(format, hidlMem);
                            info.mMemRef = hidlMem;
                            info.mMemRef = hidlMem;
                        } else {
                        } else {
+4 −0
Original line number Original line Diff line number Diff line
@@ -1043,6 +1043,10 @@ status_t OMXNodeInstance::useBuffer(


        case OMXBuffer::kBufferTypeHidlMemory: {
        case OMXBuffer::kBufferTypeHidlMemory: {
                sp<IHidlMemory> hidlMemory = mapMemory(omxBuffer.mHidlMemory);
                sp<IHidlMemory> hidlMemory = mapMemory(omxBuffer.mHidlMemory);
                if (hidlMemory == nullptr) {
                    ALOGE("OMXNodeInstance useBuffer() failed to map memory");
                    return NO_MEMORY;
                }
                return useBuffer_l(portIndex, NULL, hidlMemory, buffer);
                return useBuffer_l(portIndex, NULL, hidlMemory, buffer);
            }
            }
        default:
        default: