| // Copyright 2021 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| library fuchsia.fuzzer; |
| |
| using zx; |
| |
| /// See |Controller.GetCorpusWriter| and |Controller.GetCorpusReader|. |
| type Corpus = flexible enum : uint8 { |
| /// Indicates a set of fixed, immutable inputs typically provided at |
| /// start-up. These inputs are never discarded when merging. |
| SEED = 1; |
| |
| /// Indicates a set of inputs generated by the fuzzer. These may be modified |
| /// and/or discarded when merging and minimizing the corpus. |
| LIVE = 2; |
| }; |
| |
| /// Sends a sequence of test inputs belonging to a fuzzer's corpus. |
| closed protocol CorpusReader { |
| /// Sends the next test input from the corpus. |
| /// |
| /// + request `test_input` the byte sequence representing the next test |
| /// input in a corpus. |
| /// - response `result` one of the following: |
| /// - `ZX_OK` if the test input was sent. |
| /// - A socket error if transferring the input failed. |
| strict Next(resource struct { |
| test_input Input; |
| }) -> (struct { |
| result zx.Status; |
| }); |
| }; |