From 3cfe894b93bbf2ff7dc1e48bb8b3d8d228fa0550 Mon Sep 17 00:00:00 2001 From: Andrey Udovenko Date: Tue, 18 Nov 2014 19:36:44 -0500 Subject: [PATCH] Additional IV fix. Trim sign bit from BigInteger.toByteArray() output, if it creates a 17th byte for it. #145 --- .../com/google/android/exoplayer/hls/HlsChunkSource.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java index 88c729f495..c50a7aad65 100644 --- a/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java +++ b/library/src/main/java/com/google/android/exoplayer/hls/HlsChunkSource.java @@ -395,8 +395,9 @@ public class HlsChunkSource { byte[] ivData = new BigInteger(iv, 16).toByteArray(); byte[] ivDataWithPadding = new byte[16]; - System.arraycopy(ivData, 0, ivDataWithPadding, ivDataWithPadding.length - ivData.length, - ivData.length); + int offset = ivData.length > 16 ? ivData.length - 16 : 0; + System.arraycopy(ivData, offset, ivDataWithPadding, ivDataWithPadding.length - ivData.length + + offset, ivData.length - offset); encryptedDataSource = new Aes128DataSource(secretKey, ivDataWithPadding, upstreamDataSource); }