| // Copyright 2019 The Chromium OS Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| // |
| // Fuzzer for PasswordAuthorizationDelegate. |
| |
| #include <base/logging.h> |
| #include <fuzzer/FuzzedDataProvider.h> |
| |
| #include "trunks/password_authorization_delegate.h" |
| |
| struct Environment { |
| Environment() { |
| logging::SetMinLogLevel(logging::LOG_FATAL); // Disable logging. |
| } |
| }; |
| |
| extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) { |
| static Environment env; |
| |
| FuzzedDataProvider data_provider(data, size); |
| trunks::PasswordAuthorizationDelegate delegate( |
| data_provider.ConsumeRandomLengthString( |
| sizeof(trunks::TPM2B_DIGEST().buffer))); |
| std::string auth; |
| constexpr int kMaxRandomAuthLength = 1024; |
| // All the input params here are ignored, only the password in the constructor |
| // actually matters. |
| delegate.GetCommandAuthorization("", false, false, &auth); |
| |
| // The first parameter is ignored. |
| delegate.CheckResponseAuthorization( |
| "", data_provider.ConsumeRandomLengthString(kMaxRandomAuthLength)); |
| return 0; |
| } |