Add a new LPM fuzzer for Mach message servers.
This fuzzer tool allows modeling the complex Mach IPC structures,
including the generation and transfer of port rights. It also adds a
build rule to convert textproto to binarypb, so that the seed corpus for
these fuzzers can be human-editable/readable.
Adds a simple fuzzer for the MachPortRendezvousServer.
Bug: 932175
Change-Id: I909e4a8bac802ea1d4d73d26fcb0834803324360
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1526561
Reviewed-by: Mark Mentovai <[email protected]>
Reviewed-by: Jonathan Metzman <[email protected]>
Reviewed-by: Nico Weber <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#641854}
Cr-Mirrored-From: https://chromium.googlesource.com/chromium/src
Cr-Mirrored-Commit: d45d88cf3d69928d8fe026bc88aa3d7a25853937diff --git a/protoc_convert.py b/protoc_convert.py
new file mode 100644
index 0000000..1da63e4
--- /dev/null
+++ b/protoc_convert.py
@@ -0,0 +1,30 @@
+# Copyright 2019 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+"""Helper script for use by GN to encode/decode proto files. The protoc tool
+requires using stdin/stdout for the --encode/--decode options, but that form
+of processing is not supported by GN.
+"""
+
+import argparse
+import subprocess
+
+def Main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--protoc', help='Path to protoc compiler.')
+ parser.add_argument('--infile', required=True,
+ help='Path to input file that will be used as stdin.')
+ parser.add_argument('--outfile', required=True,
+ help='Path to output file that will be used as stdout.')
+ args, passthrough_args = parser.parse_known_args()
+
+ stdin = open(args.infile, 'r')
+ stdout = open(args.outfile, 'w')
+
+ subprocess.check_call([args.protoc] + passthrough_args, stdin=stdin,
+ stdout=stdout)
+
+
+if __name__ == '__main__':
+ Main()