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

Commit baa229be authored by Marco Nelissen's avatar Marco Nelissen Committed by Jessica Wagantall
Browse files

Check malloc result to avoid NPD

Bug: 28471206
Ticket: CYNGNOS-3020

Change-Id: Id5d055d76893d6f53a2e524ff5f282d1ddca3345
(cherry picked from commit 6a456937)
parent fe13f97a
Loading
Loading
Loading
Loading
+18 −1
Original line number Diff line number Diff line
@@ -544,7 +544,10 @@ status_t MPEG4Extractor::readMetaData() {
    }
    if (psshsize > 0 && psshsize <= UINT32_MAX) {
        char *buf = (char*)malloc(psshsize);
        CHECK(buf != NULL);
        if (!buf) {
            ALOGE("b/28471206");
            return NO_MEMORY;
        }
        char *ptr = buf;
        for (size_t i = 0; i < mPssh.size(); i++) {
            memcpy(ptr, mPssh[i].uuid, 20); // uuid + length
@@ -1735,6 +1738,11 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) {

            sp<ABuffer> buffer = new ABuffer(chunk_data_size);

            if (buffer->data() == NULL) {
                ALOGE("b/28471206");
                return NO_MEMORY;
            }

            if (mDataSource->readAt(
                        data_offset, buffer->data(), chunk_data_size) < chunk_data_size) {
                return ERROR_IO;
@@ -1752,6 +1760,11 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) {
        {
            sp<ABuffer> buffer = new ABuffer(chunk_data_size);

            if (buffer->data() == NULL) {
                ALOGE("b/28471206");
                return NO_MEMORY;
            }

            if (mDataSource->readAt(
                        data_offset, buffer->data(), chunk_data_size) < chunk_data_size) {
                return ERROR_IO;
@@ -2087,6 +2100,10 @@ status_t MPEG4Extractor::parseChunk(off64_t *offset, int depth) {
                    return ERROR_MALFORMED;
                }
                sp<ABuffer> buffer = new ABuffer(chunk_data_size + 1);
                if (buffer->data() == NULL) {
                    ALOGE("b/28471206");
                    return NO_MEMORY;
                }
                if (mDataSource->readAt(
                    data_offset, buffer->data(), chunk_data_size) != (ssize_t)chunk_data_size) {
                    return ERROR_IO;