Loading services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java +22 −2 Original line number Diff line number Diff line Loading @@ -117,14 +117,15 @@ public class HdmiCecMessageValidator { // TODO: Validate more than length for the following messages. // Messages for the One Touch Record. FixedLengthValidator oneByteValidator = new FixedLengthValidator(1); addValidationInfo(Constants.MESSAGE_RECORD_ON, new VariableLengthValidator(1, 8), DEST_DIRECT); addValidationInfo(Constants.MESSAGE_RECORD_STATUS, oneByteValidator, DEST_DIRECT); addValidationInfo(Constants.MESSAGE_RECORD_STATUS, new RecordStatusInfoValidator(), DEST_DIRECT); // TODO: Handle messages for the Timer Programming. // Messages for the System Information. FixedLengthValidator oneByteValidator = new FixedLengthValidator(1); addValidationInfo(Constants.MESSAGE_CEC_VERSION, oneByteValidator, DEST_DIRECT); addValidationInfo(Constants.MESSAGE_SET_MENU_LANGUAGE, new FixedLengthValidator(3), DEST_BROADCAST); Loading Loading @@ -339,4 +340,23 @@ public class HdmiCecMessageValidator { isValidPhysicalAddress(params, 0) && isValidPhysicalAddress(params, 2)); } } /** * Check if the given record status message parameter is valid. * A valid parameter should lie within the range description of Record Status Info defined in * CEC 1.4 Specification : Operand Descriptions (Section 17) */ private class RecordStatusInfoValidator implements ParameterValidator { @Override public int isValid(byte[] params) { if (params.length < 1) { return ERROR_PARAMETER_SHORT; } return toErrorCode(isWithinRange(params[0], 0x01, 0x07) || isWithinRange(params[0], 0x09, 0x0E) || isWithinRange(params[0], 0x10, 0x17) || isWithinRange(params[0], 0x1A, 0x1B) || params[0] == 0x1F); } } } Loading
services/core/java/com/android/server/hdmi/HdmiCecMessageValidator.java +22 −2 Original line number Diff line number Diff line Loading @@ -117,14 +117,15 @@ public class HdmiCecMessageValidator { // TODO: Validate more than length for the following messages. // Messages for the One Touch Record. FixedLengthValidator oneByteValidator = new FixedLengthValidator(1); addValidationInfo(Constants.MESSAGE_RECORD_ON, new VariableLengthValidator(1, 8), DEST_DIRECT); addValidationInfo(Constants.MESSAGE_RECORD_STATUS, oneByteValidator, DEST_DIRECT); addValidationInfo(Constants.MESSAGE_RECORD_STATUS, new RecordStatusInfoValidator(), DEST_DIRECT); // TODO: Handle messages for the Timer Programming. // Messages for the System Information. FixedLengthValidator oneByteValidator = new FixedLengthValidator(1); addValidationInfo(Constants.MESSAGE_CEC_VERSION, oneByteValidator, DEST_DIRECT); addValidationInfo(Constants.MESSAGE_SET_MENU_LANGUAGE, new FixedLengthValidator(3), DEST_BROADCAST); Loading Loading @@ -339,4 +340,23 @@ public class HdmiCecMessageValidator { isValidPhysicalAddress(params, 0) && isValidPhysicalAddress(params, 2)); } } /** * Check if the given record status message parameter is valid. * A valid parameter should lie within the range description of Record Status Info defined in * CEC 1.4 Specification : Operand Descriptions (Section 17) */ private class RecordStatusInfoValidator implements ParameterValidator { @Override public int isValid(byte[] params) { if (params.length < 1) { return ERROR_PARAMETER_SHORT; } return toErrorCode(isWithinRange(params[0], 0x01, 0x07) || isWithinRange(params[0], 0x09, 0x0E) || isWithinRange(params[0], 0x10, 0x17) || isWithinRange(params[0], 0x1A, 0x1B) || params[0] == 0x1F); } } }