diff options
Diffstat (limited to 'fuzz/parse_certificate_fuzzer.cc')
-rw-r--r-- | fuzz/parse_certificate_fuzzer.cc | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/fuzz/parse_certificate_fuzzer.cc b/fuzz/parse_certificate_fuzzer.cc new file mode 100644 index 0000000..9e976f6 --- /dev/null +++ b/fuzz/parse_certificate_fuzzer.cc @@ -0,0 +1,25 @@ +// Copyright 2016 The Chromium Authors +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include <stddef.h> +#include <stdint.h> + +#include "../pki/cert_errors.h" +#include "../pki/parsed_certificate.h" +#include <openssl/pool.h> + +extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { + bssl::CertErrors errors; + std::shared_ptr<const bssl::ParsedCertificate> cert = + bssl::ParsedCertificate::Create( + bssl::UniquePtr<CRYPTO_BUFFER>( + CRYPTO_BUFFER_new(data, size, nullptr)), + {}, &errors); + + // Severe errors must be provided iff the parsing failed. + CHECK_EQ(errors.ContainsAnyErrorWithSeverity(bssl::CertError::SEVERITY_HIGH), + cert == nullptr); + + return 0; +} |