From d72e26ff35326673ba375d31c8d59252d1241dab Mon Sep 17 00:00:00 2001 From: aquilescanta Date: Fri, 26 Aug 2016 06:20:18 -0700 Subject: [PATCH] Add CRC check for PMT ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=131394778 --- .../android/exoplayer2/extractor/ts/TsExtractor.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/library/src/main/java/com/google/android/exoplayer2/extractor/ts/TsExtractor.java b/library/src/main/java/com/google/android/exoplayer2/extractor/ts/TsExtractor.java index 2a80ec8d21..d7800c6d21 100644 --- a/library/src/main/java/com/google/android/exoplayer2/extractor/ts/TsExtractor.java +++ b/library/src/main/java/com/google/android/exoplayer2/extractor/ts/TsExtractor.java @@ -278,7 +278,7 @@ public final class TsExtractor implements Extractor { int crcStart = data.getPosition() - 3; int crcEnd = data.getPosition() + sectionLength; - if (Util.crc(data.data, crcStart, crcEnd, 0xffffffff) != 0) { + if (Util.crc(data.data, crcStart, crcEnd, 0xFFFFFFFF) != 0) { // CRC Invalid. The section gets discarded. return; } @@ -313,6 +313,7 @@ public final class TsExtractor implements Extractor { private int sectionLength; private int sectionBytesRead; + private int crc; public PmtReader() { pmtScratch = new ParsableBitArray(new byte[5]); @@ -337,6 +338,7 @@ public final class TsExtractor implements Extractor { data.readBytes(pmtScratch, 3); pmtScratch.skipBits(12); // table_id (8), section_syntax_indicator (1), 0 (1), reserved (2) sectionLength = pmtScratch.readBits(12); + crc = Util.crc(pmtScratch.data, 0, 3, 0xFFFFFFFF); if (sectionData.capacity() < sectionLength) { sectionData.reset(new byte[sectionLength], sectionLength); @@ -354,6 +356,11 @@ public final class TsExtractor implements Extractor { return; } + if (Util.crc(sectionData.data, 0, sectionLength, crc) != 0) { + // CRC Invalid. The section gets discarded. + return; + } + // program_number (16), reserved (2), version_number (5), current_next_indicator (1), // section_number (8), last_section_number (8), reserved (3), PCR_PID (13) // Skip the rest of the PMT header.