Merge pull request #9924 from jruesga:cea708-decoder-honor-service-block-size

PiperOrigin-RevId: 426953267
This commit is contained in:
Ian Baker 2022-02-08 10:56:39 +00:00
commit 60d9ae4758
2 changed files with 5 additions and 1 deletions

View File

@ -81,6 +81,8 @@
([#9673](https://github.com/google/ExoPlayer/issues/9673)). ([#9673](https://github.com/google/ExoPlayer/issues/9673)).
* Add basic support for WebVTT subtitles in Matroska containers * Add basic support for WebVTT subtitles in Matroska containers
([#9886](https://github.com/google/ExoPlayer/issues/9886)). ([#9886](https://github.com/google/ExoPlayer/issues/9886)).
* Prevent `Cea708Decoder` from reading more than the declared size of a
service block.
* DRM: * DRM:
* Remove `playbackLooper` from `DrmSessionManager.(pre)acquireSession`. * Remove `playbackLooper` from `DrmSessionManager.(pre)acquireSession`.
When a `DrmSessionManager` is used by an app in a custom `MediaSource`, When a `DrmSessionManager` is used by an app in a custom `MediaSource`,

View File

@ -327,7 +327,9 @@ public final class Cea708Decoder extends CeaDecoder {
// 8.10.4 for more details. // 8.10.4 for more details.
boolean cuesNeedUpdate = false; boolean cuesNeedUpdate = false;
while (serviceBlockPacket.bitsLeft() > 0) { int blockEndBitPosition = serviceBlockPacket.getPosition() + (blockSize * 8);
while (serviceBlockPacket.bitsLeft() > 0
&& serviceBlockPacket.getPosition() < blockEndBitPosition) {
int command = serviceBlockPacket.readBits(8); int command = serviceBlockPacket.readBits(8);
if (command != COMMAND_EXT1) { if (command != COMMAND_EXT1) {
if (command <= GROUP_C0_END) { if (command <= GROUP_C0_END) {