From 6ec9b529371ffeb5d4671e5b98d761d99530bf46 Mon Sep 17 00:00:00 2001 From: David Wong Date: Fri, 4 Oct 2019 16:46:02 -0700 Subject: [PATCH] [fuzzing] adding merkle tree proto fuzzing MOTIVATION: Adding two fuzzers. When receiving sparse and non-sparse merkle tree proofs, there is some involved proto decoding code that we can fuzz. --- testsuite/libra-fuzzer/src/fuzz_targets.rs | 4 ++++ .../src/fuzz_targets/accumulator_merkle_proof.rs | 7 +++++++ .../libra-fuzzer/src/fuzz_targets/sparse_merkle_proof.rs | 6 ++++++ 3 files changed, 17 insertions(+) create mode 100644 testsuite/libra-fuzzer/src/fuzz_targets/accumulator_merkle_proof.rs create mode 100644 testsuite/libra-fuzzer/src/fuzz_targets/sparse_merkle_proof.rs diff --git a/testsuite/libra-fuzzer/src/fuzz_targets.rs b/testsuite/libra-fuzzer/src/fuzz_targets.rs index 1fc97a962e8..af9fa43c2fb 100644 --- a/testsuite/libra-fuzzer/src/fuzz_targets.rs +++ b/testsuite/libra-fuzzer/src/fuzz_targets.rs @@ -55,12 +55,14 @@ macro_rules! proto_fuzz_target { } // List fuzz target modules here. +mod accumulator_merkle_proof; mod admission_control; mod compiled_module; mod consensus_proposal; mod inbound_rpc_protocol; mod inner_signed_transaction; mod signed_transaction; +mod sparse_merkle_proof; mod vm_value; lazy_static! { @@ -70,6 +72,8 @@ lazy_static! { Box::new(compiled_module::CompiledModuleTarget::default()), Box::new(signed_transaction::SignedTransactionTarget::default()), Box::new(inner_signed_transaction::SignedTransactionTarget::default()), + Box::new(sparse_merkle_proof::SparseMerkleProofTarget::default()), + Box::new(accumulator_merkle_proof::AccumulatorProofTarget::default()), Box::new(vm_value::ValueTarget::default()), Box::new(consensus_proposal::ConsensusProposal::default()), Box::new(admission_control::AdmissionControlSubmitTransactionRequest::default()), diff --git a/testsuite/libra-fuzzer/src/fuzz_targets/accumulator_merkle_proof.rs b/testsuite/libra-fuzzer/src/fuzz_targets/accumulator_merkle_proof.rs new file mode 100644 index 00000000000..420d95a2b9b --- /dev/null +++ b/testsuite/libra-fuzzer/src/fuzz_targets/accumulator_merkle_proof.rs @@ -0,0 +1,7 @@ +// Copyright (c) The Libra Core Contributors +// SPDX-License-Identifier: Apache-2.0 + +use libra_types::proof::TransactionAccumulatorProof; +use libra_types::proto::types::AccumulatorProof as ProtoAccumulatorProof; + +proto_fuzz_target!(AccumulatorProofTarget => TransactionAccumulatorProof, ProtoAccumulatorProof); diff --git a/testsuite/libra-fuzzer/src/fuzz_targets/sparse_merkle_proof.rs b/testsuite/libra-fuzzer/src/fuzz_targets/sparse_merkle_proof.rs new file mode 100644 index 00000000000..76d5f90858f --- /dev/null +++ b/testsuite/libra-fuzzer/src/fuzz_targets/sparse_merkle_proof.rs @@ -0,0 +1,6 @@ +// Copyright (c) The Libra Core Contributors +// SPDX-License-Identifier: Apache-2.0 +use libra_types::proof::SparseMerkleProof; +use libra_types::proto::types::SparseMerkleProof as ProtoSparseMerkleProof; + +proto_fuzz_target!(SparseMerkleProofTarget => SparseMerkleProof, ProtoSparseMerkleProof);