blob: 2e8a5ed975c54fae1bf08d9bffccf19d6e72a9e4 [file] [log] [blame] [edit]
// 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_