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

Commit 7e736a4b authored by Vasily Tarasov's avatar Vasily Tarasov
Browse files

Fix CA descriptor parsing

CA descriptor can be more than 4 bytes long, skip correct length.

Bug: 118717575
Test: GTS, MediaCasWidevineKeyTest#testWidevineKeyPlaybackMpeg2ts

Change-Id: I127caf46dfbe7408e8d58343d7e7614415fa5dd0
parent 81b64e75
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -552,8 +552,10 @@ status_t ATSParser::Program::parseProgramMap(ABitReader *br) {
                hasStreamCA = true;
                streamCA.mSystemID = br->getBits(16);
                streamCA.mPID = br->getBits(16) & 0x1fff;
                ES_info_length -= 4;
                streamCA.mPrivateData.assign(br->data(), br->data() + descriptor_length - 4);
                ES_info_length -= descriptor_length;
                descriptor_length -= 4;
                streamCA.mPrivateData.assign(br->data(), br->data() + descriptor_length);
                br->skipBits(descriptor_length * 8);
            } else if (info.mType == STREAMTYPE_PES_PRIVATE_DATA &&
                       descriptor_tag == DESCRIPTOR_DVB_EXTENSION && descriptor_length >= 1) {
                unsigned descTagExt = br->getBits(8);