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

Commit e541fa17 authored by Marco Nelissen's avatar Marco Nelissen Committed by android-build-merger
Browse files

Merge "Fix overflow check and check read result" into klp-dev

am: b6aa3901

Change-Id: I80ef33d8f0593fa723077e91a5ca406f27b0b746
parents 86bd734f b6aa3901
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -241,14 +241,11 @@ status_t BnHDCP::onTransact(
        case HDCP_ENCRYPT:
        {
            size_t size = data.readInt32();
            size_t bufSize = 2 * size;

            // watch out for overflow
            void *inData = NULL;
            if (bufSize > size) {
                inData = malloc(bufSize);
            // watch out for overflow
            if (size <= SIZE_MAX / 2) {
                inData = malloc(2 * size);
            }

            if (inData == NULL) {
                reply->writeInt32(ERROR_OUT_OF_RANGE);
                return OK;
@@ -256,11 +253,16 @@ status_t BnHDCP::onTransact(

            void *outData = (uint8_t *)inData + size;

            data.read(inData, size);
            status_t err = data.read(inData, size);
            if (err != OK) {
                free(inData);
                reply->writeInt32(err);
                return OK;
            }

            uint32_t streamCTR = data.readInt32();
            uint64_t inputCTR;
            status_t err = encrypt(inData, size, streamCTR, &inputCTR, outData);
            err = encrypt(inData, size, streamCTR, &inputCTR, outData);

            reply->writeInt32(err);