summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Amy Zhang <amyjojo@google.com> 2020-11-20 23:36:01 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-11-20 23:36:01 +0000
commitf5c7020cd808236ca37b35d43c28626a7be12f8c (patch)
tree30f70287465f928f91eed2a38445446c9b82ae0d
parent1681b437d2983a73326818d7bbfb8e3698e4f895 (diff)
parenteeaa4d65447bc1245339be6b7d909dd828f7622a (diff)
Merge "Add a Descrambler KeyToken validator"
-rw-r--r--media/java/android/media/tv/tuner/Descrambler.java23
-rw-r--r--media/java/android/media/tv/tuner/filter/RecordSettings.java2
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;
/**