| Index: mojo/public/cpp/bindings/lib/validation_util.cc
|
| diff --git a/mojo/public/cpp/bindings/lib/validation_util.cc b/mojo/public/cpp/bindings/lib/validation_util.cc
|
| index 944c6541323bdb5aa36edc5268bd9d6bc19e10c0..37b70015c01d02912da39c07fd5ddddc04484a6c 100644
|
| --- a/mojo/public/cpp/bindings/lib/validation_util.cc
|
| +++ b/mojo/public/cpp/bindings/lib/validation_util.cc
|
| @@ -100,38 +100,6 @@ bool ValidateMessageIsResponse(const Message* message,
|
| return true;
|
| }
|
|
|
| -bool ValidateControlRequest(const Message* message,
|
| - ValidationContext* validation_context) {
|
| - switch (message->header()->name) {
|
| - case interface_control::kRunMessageId:
|
| - return ValidateMessageIsRequestExpectingResponse(message,
|
| - validation_context) &&
|
| - ValidateMessagePayload<
|
| - interface_control::internal::RunMessageParams_Data>(
|
| - message, validation_context);
|
| - case interface_control::kRunOrClosePipeMessageId:
|
| - return ValidateMessageIsRequestWithoutResponse(message,
|
| - validation_context) &&
|
| - ValidateMessagePayload<
|
| - interface_control::internal::RunOrClosePipeMessageParams_Data>(
|
| - message, validation_context);
|
| - }
|
| - return false;
|
| -}
|
| -
|
| -bool ValidateControlResponse(const Message* message,
|
| - ValidationContext* validation_context) {
|
| - if (!ValidateMessageIsResponse(message, validation_context))
|
| - return false;
|
| - switch (message->header()->name) {
|
| - case interface_control::kRunMessageId:
|
| - return ValidateMessagePayload<
|
| - interface_control::internal::RunResponseMessageParams_Data>(
|
| - message, validation_context);
|
| - }
|
| - return false;
|
| -}
|
| -
|
| bool IsHandleOrInterfaceValid(const AssociatedInterface_Data& input) {
|
| return IsValidInterfaceId(input.interface_id);
|
| }
|
| @@ -238,5 +206,35 @@ bool ValidateHandleOrInterface(const Handle_Data& input,
|
| return false;
|
| }
|
|
|
| +bool ControlMessageValidator::Accept(Message* message) {
|
| + if (ControlMessageHandler::IsControlMessage(message)) {
|
| + ValidationContext validation_context(
|
| + message->data(), message->data_num_bytes(), message->handles()->size(),
|
| + message, "ControlMessageValidator");
|
| + switch (message->header()->name) {
|
| + case interface_control::kRunMessageId:
|
| + if (message->has_flag(Message::kFlagExpectsResponse)) {
|
| + return ValidateMessagePayload<
|
| + interface_control::internal::RunMessageParams_Data>(
|
| + message, &validation_context);
|
| + }
|
| + if (message->has_flag(Message::kFlagIsResponse)) {
|
| + return ValidateMessagePayload<
|
| + interface_control::internal::RunResponseMessageParams_Data>(
|
| + message, &validation_context);
|
| + }
|
| + return false;
|
| + case interface_control::kRunOrClosePipeMessageId:
|
| + return ValidateMessageIsRequestWithoutResponse(message,
|
| + &validation_context) &&
|
| + ValidateMessagePayload<interface_control::internal::
|
| + RunOrClosePipeMessageParams_Data>(
|
| + message, &validation_context);
|
| + }
|
| + return false;
|
| + }
|
| + return true;
|
| +}
|
| +
|
| } // namespace internal
|
| } // namespace mojo
|
|
|