| // Copyright 2022 The ChromiumOS Authors | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef LIBHWSEC_FUZZED_VENDOR_H_ | |
| #define LIBHWSEC_FUZZED_VENDOR_H_ | |
| #include <type_traits> | |
| #include <brillo/secure_blob.h> | |
| #include <fuzzer/FuzzedDataProvider.h> | |
| #include "libhwsec/backend/vendor.h" | |
| #include "libhwsec/fuzzed/basic_objects.h" | |
| #include "libhwsec/structures/ifx_info.h" | |
| namespace hwsec { | |
| template <> | |
| struct FuzzedObject<IFXFieldUpgradeInfo::FirmwarePackage> { | |
| IFXFieldUpgradeInfo::FirmwarePackage operator()( | |
| FuzzedDataProvider& provider) const { | |
| return IFXFieldUpgradeInfo::FirmwarePackage{ | |
| .package_id = FuzzedObject<uint32_t>()(provider), | |
| .version = FuzzedObject<uint32_t>()(provider), | |
| .stale_version = FuzzedObject<uint32_t>()(provider), | |
| }; | |
| } | |
| }; | |
| template <> | |
| struct FuzzedObject<IFXFieldUpgradeInfo> { | |
| IFXFieldUpgradeInfo operator()(FuzzedDataProvider& provider) const { | |
| return IFXFieldUpgradeInfo{ | |
| .max_data_size = FuzzedObject<uint16_t>()(provider), | |
| .bootloader = | |
| FuzzedObject<IFXFieldUpgradeInfo::FirmwarePackage>()(provider), | |
| .firmware = | |
| { | |
| FuzzedObject<IFXFieldUpgradeInfo::FirmwarePackage>()(provider), | |
| FuzzedObject<IFXFieldUpgradeInfo::FirmwarePackage>()(provider), | |
| }, | |
| .status = FuzzedObject<uint16_t>()(provider), | |
| .process_fw = | |
| FuzzedObject<IFXFieldUpgradeInfo::FirmwarePackage>()(provider), | |
| .field_upgrade_counter = FuzzedObject<uint16_t>()(provider), | |
| }; | |
| } | |
| }; | |
| template <> | |
| struct FuzzedObject<Vendor::RwVersion> { | |
| Vendor::RwVersion operator()(FuzzedDataProvider& provider) const { | |
| return Vendor::RwVersion{ | |
| .epoch = FuzzedObject<uint32_t>()(provider), | |
| .major = FuzzedObject<uint32_t>()(provider), | |
| .minor = FuzzedObject<uint32_t>()(provider), | |
| }; | |
| } | |
| }; | |
| } // namespace hwsec | |
| #endif // LIBHWSEC_FUZZED_VENDOR_H_ |