diff options
| author | 2020-11-20 23:36:01 +0000 | |
|---|---|---|
| committer | 2020-11-20 23:36:01 +0000 | |
| commit | f5c7020cd808236ca37b35d43c28626a7be12f8c (patch) | |
| tree | 30f70287465f928f91eed2a38445446c9b82ae0d | |
| parent | 1681b437d2983a73326818d7bbfb8e3698e4f895 (diff) | |
| parent | eeaa4d65447bc1245339be6b7d909dd828f7622a (diff) | |
Merge "Add a Descrambler KeyToken validator"
| -rw-r--r-- | media/java/android/media/tv/tuner/Descrambler.java | 23 | ||||
| -rw-r--r-- | media/java/android/media/tv/tuner/filter/RecordSettings.java | 2 |
2 files changed, 21 insertions, 4 deletions
diff --git a/media/java/android/media/tv/tuner/Descrambler.java b/media/java/android/media/tv/tuner/Descrambler.java index 5f79dc52a2f1..2217eb3a1dc1 100644 --- a/media/java/android/media/tv/tuner/Descrambler.java +++ b/media/java/android/media/tv/tuner/Descrambler.java @@ -22,6 +22,7 @@ import android.annotation.Nullable; import android.annotation.SystemApi; import android.media.tv.tuner.Tuner.Result; import android.media.tv.tuner.filter.Filter; +import android.util.Log; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; @@ -115,9 +116,9 @@ public class Descrambler implements AutoCloseable { * keys for different purposes. * * @param keyToken the token to be used to link the key slot. Use {@link Tuner.INVALID_KEYTOKEN} - * to remove the to remove the current key from descrambler. If the current keyToken - * comes from MediaCas session, use {@link Tuner.INVALID_KEYTOKEN} to remove current key - * before close MediaCas session. + * to remove the current key from descrambler. If the current keyToken comes from a + * MediaCas session, use {@link Tuner.INVALID_KEYTOKEN} to remove current key before + * closing the MediaCas session. * @return result status of the operation. */ @Result @@ -125,6 +126,9 @@ public class Descrambler implements AutoCloseable { synchronized (mLock) { TunerUtils.checkResourceState(TAG, mIsClosed); Objects.requireNonNull(keyToken, "key token must not be null"); + if (!isValidKeyToken(keyToken)) { + return Tuner.RESULT_INVALID_ARGUMENT; + } return nativeSetKeyToken(keyToken); } } @@ -147,4 +151,17 @@ public class Descrambler implements AutoCloseable { } } + private boolean isValidKeyToken(byte[] keyToken) { + if (keyToken.length == 0 || keyToken.length > 16) { + Log.d(TAG, "Invalid key token size: " + (keyToken.length * 8) + " bit."); + return false; + } + for (int i = 0; i < keyToken.length; i++) { + if (keyToken[i] < 0) { + Log.d(TAG, "Invalid key token."); + return false; + } + } + return true; + } } diff --git a/media/java/android/media/tv/tuner/filter/RecordSettings.java b/media/java/android/media/tv/tuner/filter/RecordSettings.java index 52ce208f251e..91992afadb3e 100644 --- a/media/java/android/media/tv/tuner/filter/RecordSettings.java +++ b/media/java/android/media/tv/tuner/filter/RecordSettings.java @@ -51,7 +51,7 @@ public class RecordSettings extends Settings { public @interface TsIndexMask {} /** - * Invalid TS index. + * Invalid Transport Stream (TS) index. */ public static final int TS_INDEX_INVALID = 0; /** |