62 lines
1.8 KiB
Protocol Buffer
62 lines
1.8 KiB
Protocol Buffer
// Copyright 2019 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
syntax = "proto2";
|
|
|
|
package mach_fuzzer;
|
|
|
|
// Specifies a type of Mach port right to create.
|
|
enum MachPortType {
|
|
// Create a receive right and move it to the peer, while holding
|
|
// a send right.
|
|
RECEIVE = 0;
|
|
// Create a receive right and make a send right during mach_msg.
|
|
SEND = 1;
|
|
// Create a receive right and vend a send-once right during mach_msg.
|
|
SEND_ONCE = 2;
|
|
// Create a dead name right and give a send right to it to the peer.
|
|
DEAD_NAME = 3;
|
|
// Create a receive right with no senders and move the receive right
|
|
// to the peer.
|
|
RECEIVE_NO_SENDERS = 4;
|
|
}
|
|
|
|
// Data to send in an out-of-line memory region in Mach message descriptor.
|
|
message OutOfLineMemory {
|
|
required bytes data = 1;
|
|
}
|
|
|
|
// Models a mach_msg_descriptor_t.
|
|
message Descriptor {
|
|
oneof descriptor_oneof {
|
|
MachPortType port = 1;
|
|
OutOfLineMemory ool = 2;
|
|
}
|
|
}
|
|
|
|
// Models a Mach message structure including the header, optional body,
|
|
// and inline data.
|
|
message MachMessage {
|
|
// Creates an optional port to put in msgh_local_port. If this is a receive
|
|
// right, it will be dropped.
|
|
optional MachPortType local_port = 1;
|
|
|
|
// The msgh_id field.
|
|
optional uint32 id = 2;
|
|
|
|
// Optional Descriptors to carry in the message.
|
|
repeated Descriptor descriptors = 3;
|
|
|
|
// If no Descriptors are present, whether or not to include a mach_msg_body_t
|
|
// in the message.
|
|
required bool include_body_if_not_complex = 4;
|
|
|
|
// Raw data bytes to send inline with the message.
|
|
optional bytes data = 5;
|
|
|
|
// Extensions can be used by clients to express structured message data,
|
|
// which can be converted into bytes and placed in |data|.
|
|
extensions 100 to 199;
|
|
}
|