diff options
| -rw-r--r-- | services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java b/services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java index da38a3446e02..534197b382a0 100644 --- a/services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java +++ b/services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java @@ -717,7 +717,10 @@ public class HdmiCecMessageValidator { // Programmed int programedInfo = params[offset] & 0x0F; if (isValidProgrammedInfo(programedInfo)) { - if (programedInfo == 0x09 || programedInfo == 0x0B) { + offset = offset + 1; + // Duration Available (2 bytes) + if ((programedInfo == 0x09 || programedInfo == 0x0B) + && params.length - offset >= 2) { durationAvailable = true; } else { return true; @@ -727,16 +730,17 @@ public class HdmiCecMessageValidator { // Non programmed int nonProgramedErrorInfo = params[offset] & 0x0F; if (isValidNotProgrammedErrorInfo(nonProgramedErrorInfo)) { - if (nonProgramedErrorInfo == 0x0E) { + offset = offset + 1; + // Duration Available (2 bytes) + if (nonProgramedErrorInfo == 0x0E && params.length - offset >= 2) { durationAvailable = true; } else { return true; } } } - offset = offset + 1; // Duration Available (2 bytes) - if (durationAvailable && params.length - offset >= 2) { + if (durationAvailable) { return (isValidDurationHours(params[offset]) && isValidMinute(params[offset + 1])); } return false; |