* Copyright (c) 2025-2026 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef ABILITY_FUZZ_UTIL_H
#define ABILITY_FUZZ_UTIL_H
#include <fuzzer/FuzzedDataProvider.h>
#include <map>
#include <string>
#include <vector>
#include "ability_record.h"
#include "ability_info.h"
#include "application_info.h"
#include "auto_startup_info.h"
#include "bundle_info.h"
#include "bundle_user_info.h"
#include "dlp_connection_info.h"
#include "dlp_state_data.h"
#include "disposed_rule.h"
#include "ecological_rule/ability_ecological_rule_mgr_service_param.h"
#include "extract_insight_intent_profile.h"
#include "keep_alive_info.h"
#include "keep_alive_process_manager.h"
#include "insight_intent_profile.h"
namespace OHOS {
namespace AppExecFwk {
namespace AbilityFuzzUtil {
constexpr size_t CODE_ONE = 1;
constexpr size_t CODE_TWO = 2;
constexpr size_t CODE_THREE = 3;
constexpr size_t CODE_FOUR = 4;
constexpr size_t CODE_FIVE = 5;
constexpr size_t CODE_TEN = 10;
constexpr size_t CODE_FOURTEEN = 14;
constexpr size_t CODE_TWENTYFIVE = 25;
constexpr size_t CODE_MAX = 99;
constexpr size_t STRING_MAX_LENGTH = 128;
std::vector<std::string> GenerateStringArray(FuzzedDataProvider& fdp, size_t arraySizeMax = STRING_MAX_LENGTH,
size_t stringSize = STRING_MAX_LENGTH)
{
std::vector<std::string> result;
size_t arraySize = fdp.ConsumeIntegralInRange<size_t>(0, arraySizeMax);
result.reserve(arraySize);
for (size_t i = 0; i < arraySize; ++i) {
std::string str = fdp.ConsumeRandomLengthString(stringSize);
result.emplace_back(str);
}
return result;
}
AppExecFwk::ElementName GenerateElementName(FuzzedDataProvider& fdp, AppExecFwk::ElementName &elementName)
{
std::string deviceId;
std::string bundleName;
std::string abilityName;
std::string moduleName;
deviceId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
AppExecFwk::ElementName name(deviceId, bundleName, abilityName, moduleName);
return name;
}
ExecuteMode GetRandomExecuteMode(FuzzedDataProvider& fdp)
{
return static_cast<ExecuteMode>(fdp.ConsumeIntegralInRange<int>(
static_cast<int>(ExecuteMode::UI_ABILITY_FOREGROUND),
static_cast<int>(ExecuteMode::SERVICE_EXTENSION_ABILITY)
));
}
void GetRandomUIAbilityIntentInfo(FuzzedDataProvider& fdp, UIAbilityIntentInfo& info)
{
info.abilityName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
size_t modeCount = fdp.ConsumeIntegralInRange<size_t>(0, 1);
for (size_t i = 0; i < modeCount; ++i) {
info.supportExecuteMode.push_back(GetRandomExecuteMode(fdp));
}
}
void GetRandomUIExtensionIntentInfo(FuzzedDataProvider& fdp, UIExtensionIntentInfo& info)
{
info.abilityName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
void GetRandomServiceExtensionIntentInfo(FuzzedDataProvider& fdp, ServiceExtensionIntentInfo& info)
{
info.abilityName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
void GetRandomFormIntentInfo(FuzzedDataProvider& fdp, FormIntentInfo& info)
{
info.abilityName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.formName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
void GetRandomExtractInsightIntentGenericInfo(FuzzedDataProvider& fdp, ExtractInsightIntentGenericInfo& info)
{
info.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.intentName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.displayName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.decoratorType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
void GetRandomInsightIntentInfoForQuery(FuzzedDataProvider& fdp, InsightIntentInfoForQuery& info)
{
info.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.intentName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.domain = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.intentVersion = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.displayName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.displayDescription = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.schema = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.icon = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.llmDescription = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.intentType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.parameters = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.result = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.keywords = GenerateStringArray(fdp);
}
void GetRandomExtractInsightIntentInfo(FuzzedDataProvider& fdp, ExtractInsightIntentInfo& info)
{
info.decoratorFile = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.decoratorClass = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.displayDescription = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.domain = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.intentVersion = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.schema = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.icon = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.llmDescription = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.result = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.example = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.keywords = GenerateStringArray(fdp);
InsightIntentEntityInfo entities;
entities.decoratorFile = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
entities.className = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
entities.decoratorType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
entities.entityCategory = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
entities.parameters = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
entities.parentClassName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.entities.push_back(entities);
}
void GetRandomInsightIntentExecuteParam(FuzzedDataProvider& fdp, InsightIntentExecuteParam& info)
{
info.executeMode_ = fdp.ConsumeIntegral<int32_t>();
info.displayId_ = fdp.ConsumeIntegral<int32_t>();
info.flags_ = fdp.ConsumeIntegral<int32_t>();
info.insightIntentId_ = fdp.ConsumeIntegral<uint64_t>();
info.bundleName_ = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.moduleName_ = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.abilityName_ = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.insightIntentName_ = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.uris_ = GenerateStringArray(fdp);
info.decoratorType_ = fdp.ConsumeIntegral<int8_t>();
info.srcEntrance_ = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.className_ = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.methodName_ = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.methodParams_ = GenerateStringArray(fdp);
info.pagePath_ = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.navigationId_ = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.navDestinationName_ = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
void GetRandomInsightIntentInfo(FuzzedDataProvider& fdp, InsightIntentInfo& info)
{
info.intentName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.intentDomain = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.intentVersion = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.srcEntry = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.arkTSMode = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.cfgEntities = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.displayName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.icon = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.displayDescription = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.inputParams = GenerateStringArray(fdp);
info.outputParams = GenerateStringArray(fdp);
info.keywords = GenerateStringArray(fdp);
GetRandomUIAbilityIntentInfo(fdp, info.uiAbilityIntentInfo);
GetRandomUIExtensionIntentInfo(fdp, info.uiExtensionIntentInfo);
GetRandomServiceExtensionIntentInfo(fdp, info.serviceExtensionIntentInfo);
GetRandomFormIntentInfo(fdp, info.formIntentInfo);
}
void GetRandomExtractInsightIntentProfileInfo(FuzzedDataProvider& fdp, ExtractInsightIntentProfileInfo& info)
{
info.decoratorFile = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.decoratorClass = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.decoratorType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.intentName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.domain = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.intentVersion = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.displayName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.displayDescription = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.schema = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.icon = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.llmDescription = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.keywords = GenerateStringArray(fdp);
info.parameters = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.result = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.example = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.uri = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.uiAbility = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.pagePath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.navigationId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.navDestinationName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.abilityName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.executeMode = GenerateStringArray(fdp);
info.functionName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.functionParams = GenerateStringArray(fdp);
info.formName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
void GetRandomKeepAliveStatus(FuzzedDataProvider& fdp, KeepAliveStatus& status)
{
status.code = fdp.ConsumeIntegral<int32_t>();
status.setterId = fdp.ConsumeIntegral<int32_t>();
status.setter = static_cast<KeepAliveSetter>(fdp.ConsumeIntegralInRange<int32_t>(0, CODE_TWO));
}
void GetRandomDlpConnectionInfo(FuzzedDataProvider& fdp, DlpConnectionInfo& info)
{
info.dlpUid = fdp.ConsumeIntegral<int32_t>();
info.openedAbilityCount = fdp.ConsumeIntegral<int32_t>();
}
void GetRandomConnectionData(FuzzedDataProvider& fdp, ConnectionData& info)
{
info.isSuspended = fdp.ConsumeBool();
info.extensionPid = fdp.ConsumeIntegral<uint32_t>();
info.extensionUid = fdp.ConsumeIntegral<uint32_t>();
info.callerUid = fdp.ConsumeIntegral<uint32_t>();
info.callerPid = fdp.ConsumeIntegral<uint32_t>();
info.extensionBundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.extensionModuleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.extensionName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.callerName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
void GetRandomDlpStateData(FuzzedDataProvider& fdp, DlpStateData& info)
{
info.targetPid = fdp.ConsumeIntegral<uint32_t>();
info.targetUid = fdp.ConsumeIntegral<uint32_t>();
info.callerUid = fdp.ConsumeIntegral<uint32_t>();
info.callerPid = fdp.ConsumeIntegral<uint32_t>();
info.callerName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.targetBundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.targetModuleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.targetAbilityName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
void GenerateSignatureInfo(FuzzedDataProvider& fdp, SignatureInfo &signatureInfo)
{
signatureInfo.appId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
signatureInfo.fingerprint = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
signatureInfo.appIdentifier = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
signatureInfo.certificate = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
void GetRandomAbilityInfo(FuzzedDataProvider& fdp, AbilityInfo& info)
{
info.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.iconPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.labelId = fdp.ConsumeIntegral<int32_t>();
info.descriptionId = fdp.ConsumeIntegral<int32_t>();
info.iconId = fdp.ConsumeIntegral<int32_t>();
info.theme = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.visible = fdp.ConsumeBool();
info.kind = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
void GetRandomAbilityExperienceRule(FuzzedDataProvider& fdp, AbilityExperienceRule& rule)
{
rule.resultCode = fdp.ConsumeIntegral<int32_t>();
rule.sceneCode = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
rule.isBackSkuExempt = fdp.ConsumeBool();
rule.embedResultCode = fdp.ConsumeIntegral<int32_t>();
}
void GetRandomAutoStartupInfo(FuzzedDataProvider& fdp, AutoStartupInfo& info)
{
info.appCloneIndex = fdp.ConsumeIntegral<int32_t>();
info.userId = fdp.ConsumeIntegral<int32_t>();
info.retryCount = fdp.ConsumeIntegral<int32_t>();
info.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.abilityName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.abilityTypeName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.accessTokenId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
void GetRandomBundleInfo(FuzzedDataProvider& fdp, BundleInfo& info)
{
info.isNewVersion = fdp.ConsumeBool();
info.isKeepAlive = fdp.ConsumeBool();
info.singleton = fdp.ConsumeBool();
info.isPreInstallApp = fdp.ConsumeBool();
info.isNativeApp = fdp.ConsumeBool();
info.entryInstallationFree = fdp.ConsumeBool();
info.isDifferentName = fdp.ConsumeBool();
info.versionCode = fdp.ConsumeIntegral<uint32_t>();
info.minCompatibleVersionCode = fdp.ConsumeIntegral<uint32_t>();
info.compatibleVersion = fdp.ConsumeIntegral<uint32_t>();
info.targetVersion = fdp.ConsumeIntegral<uint32_t>();
info.appIndex = fdp.ConsumeIntegral<int32_t>();
info.minSdkVersion = fdp.ConsumeIntegral<int32_t>();
info.maxSdkVersion = fdp.ConsumeIntegral<int32_t>();
info.overlayType = fdp.ConsumeIntegral<int32_t>();
info.installTime = fdp.ConsumeIntegral<int64_t>();
info.updateTime = fdp.ConsumeIntegral<int64_t>();
info.firstInstallTime = fdp.ConsumeIntegral<int64_t>();
info.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.versionName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.vendor = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.releaseType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.mainEntry = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.entryModuleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.appId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.cpuAbi = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.seInfo = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.jointUserId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
GenerateSignatureInfo(fdp, info.signatureInfo);
info.oldAppIds = GenerateStringArray(fdp);
info.hapModuleNames = GenerateStringArray(fdp);
info.moduleNames = GenerateStringArray(fdp);
info.modulePublicDirs = GenerateStringArray(fdp);
info.moduleDirs = GenerateStringArray(fdp);
info.moduleResPaths = GenerateStringArray(fdp);
info.reqPermissions = GenerateStringArray(fdp);
info.defPermissions = GenerateStringArray(fdp);
}
void GetRandomKeepAliveInfo(FuzzedDataProvider& fdp, KeepAliveInfo& info)
{
info.userId = fdp.ConsumeIntegral<int32_t>();
info.setterId = fdp.ConsumeIntegral<int32_t>();
info.appType = static_cast<KeepAliveAppType>(fdp.ConsumeIntegralInRange<int32_t>(0, CODE_TWO));
info.setter = static_cast<KeepAliveSetter>(fdp.ConsumeIntegralInRange<int32_t>(0, CODE_TWO));
info.policy = static_cast<KeepAlivePolicy>(fdp.ConsumeIntegralInRange<int32_t>(0, CODE_TWO));
info.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
void GetRandomKeepAliveAbilityInfo(FuzzedDataProvider& fdp, KeepAliveAbilityInfo& info)
{
info.userId = fdp.ConsumeIntegral<int32_t>();
info.appCloneIndex = fdp.ConsumeIntegral<int32_t>();
info.uid = fdp.ConsumeIntegral<int32_t>();
info.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.abilityName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
void GetRandomKeepAliveAppInfo(FuzzedDataProvider& fdp, AppInfo& info)
{
info.processName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.state = static_cast<AppState>(fdp.ConsumeIntegralInRange<int32_t>(0, CODE_TWO));
info.pid = fdp.ConsumeIntegral<uint32_t>();
info.appIndex = fdp.ConsumeIntegral<int32_t>();
info.instanceKey = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
void GetRandomAppqfInfo(FuzzedDataProvider& fdp, AppqfInfo& deployedAppqfInfo)
{
deployedAppqfInfo.type = static_cast<QuickFixType>(fdp.ConsumeIntegralInRange<int8_t>(0, CODE_TWO));
deployedAppqfInfo.versionCode = fdp.ConsumeIntegral<int32_t>();
deployedAppqfInfo.versionName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
deployedAppqfInfo.cpuAbi = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
deployedAppqfInfo.nativeLibraryPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
std::vector<HqfInfo> hqfInfos;
}
void GetRandomDeployingAppqfInfo(FuzzedDataProvider& fdp, AppqfInfo& deployingAppqfInfo)
{
deployingAppqfInfo.type = static_cast<QuickFixType>(fdp.ConsumeIntegralInRange<int8_t>(0, CODE_TWO));
deployingAppqfInfo.versionCode = fdp.ConsumeIntegral<int32_t>();
deployingAppqfInfo.versionName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
deployingAppqfInfo.cpuAbi = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
deployingAppqfInfo.nativeLibraryPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
std::vector<HqfInfo> hqfInfos;
}
void GetRandomAppQuickFix(FuzzedDataProvider& fdp, AppQuickFix& appQuickFix)
{
appQuickFix.versionCode = fdp.ConsumeIntegral<int32_t>();
appQuickFix.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appQuickFix.versionName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
GetRandomAppqfInfo(fdp, appQuickFix.deployedAppqfInfo);
GetRandomDeployingAppqfInfo(fdp, appQuickFix.deployingAppqfInfo);
}
void GetRandomResourceInfo(FuzzedDataProvider& fdp, Resource& labelResource)
{
labelResource.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
labelResource.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
labelResource.id = fdp.ConsumeIntegral<int32_t>();
}
void GetRandomApplicationInfo(FuzzedDataProvider& fdp, ApplicationInfo& appInfo)
{
appInfo.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.versionCode = fdp.ConsumeIntegral<int32_t>();
appInfo.versionName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.minCompatibleVersionCode = fdp.ConsumeIntegral<int32_t>();
appInfo.apiCompatibleVersion = fdp.ConsumeIntegral<int32_t>();
appInfo.apiTargetVersion = fdp.ConsumeIntegral<int32_t>();
appInfo.crowdtestDeadline = fdp.ConsumeIntegral<int64_t>();
appInfo.iconPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.iconId = fdp.ConsumeIntegral<int32_t>();
GetRandomResourceInfo(fdp, appInfo.labelResource);
appInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.labelId = fdp.ConsumeIntegral<int32_t>();
GetRandomResourceInfo(fdp, appInfo.labelResource);
appInfo.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.descriptionId = fdp.ConsumeIntegral<int32_t>();
GetRandomResourceInfo(fdp, appInfo.labelResource);
appInfo.keepAlive = fdp.ConsumeBool();
appInfo.removable = fdp.ConsumeBool();
appInfo.singleton = fdp.ConsumeBool();
appInfo.userDataClearable = fdp.ConsumeBool();
appInfo.allowAppRunWhenDeviceFirstLocked = fdp.ConsumeBool();
appInfo.accessible = fdp.ConsumeBool();
appInfo.runningResourcesApply = fdp.ConsumeBool();
appInfo.associatedWakeUp = fdp.ConsumeBool();
appInfo.hideDesktopIcon = fdp.ConsumeBool();
appInfo.formVisibleNotify = fdp.ConsumeBool();
appInfo.installedForAllUser = fdp.ConsumeBool();
appInfo.allowEnableNotification = fdp.ConsumeBool();
appInfo.allowMultiProcess = fdp.ConsumeBool();
appInfo.gwpAsanEnabled = fdp.ConsumeBool();
appInfo.hasPlugin = fdp.ConsumeBool();
appInfo.allowCommonEvent = GenerateStringArray(fdp);
appInfo.assetAccessGroups = GenerateStringArray(fdp);
appInfo.isSystemApp = fdp.ConsumeBool();
appInfo.isLauncherApp = fdp.ConsumeBool();
appInfo.isFreeInstallApp = fdp.ConsumeBool();
appInfo.asanEnabled = fdp.ConsumeBool();
appInfo.asanLogPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.codePath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.dataDir = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.dataBaseDir = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.cacheDir = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.entryDir = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.apiReleaseType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.debug = fdp.ConsumeBool();
appInfo.deviceId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.distributedNotificationEnabled = fdp.ConsumeBool();
appInfo.entityType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.process = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.supportedModes = fdp.ConsumeIntegral<int32_t>();
appInfo.vendor = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.appPrivilegeLevel = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.appDistributionType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.appProvisionType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.accessTokenId = fdp.ConsumeIntegral<int32_t>();
appInfo.applicationReservedFlag = fdp.ConsumeIntegral<int32_t>();
appInfo.accessTokenIdEx = fdp.ConsumeIntegral<int64_t>();
appInfo.enabled = fdp.ConsumeBool();
appInfo.appIndex = fdp.ConsumeIntegral<int64_t>();
appInfo.uid = fdp.ConsumeIntegral<int32_t>();
appInfo.maxChildProcess = fdp.ConsumeIntegral<int32_t>();
appInfo.nativeLibraryPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.cpuAbi = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.arkNativeFilePath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.arkNativeFileAbi = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.permissions = GenerateStringArray(fdp);
appInfo.moduleSourceDirs = GenerateStringArray(fdp);
appInfo.targetBundleList = GenerateStringArray(fdp);
appInfo.fingerprint = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
GetRandomAppQuickFix(fdp, appInfo.appQuickFix);
appInfo.icon = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.flags = fdp.ConsumeIntegral<int32_t>();
appInfo.entryModuleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.isCompressNativeLibs = fdp.ConsumeBool();
appInfo.signatureKey = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.multiProjects = fdp.ConsumeBool();
appInfo.tsanEnabled = fdp.ConsumeBool();
appInfo.hwasanEnabled = fdp.ConsumeBool();
appInfo.ubsanEnabled = fdp.ConsumeBool();
appInfo.cloudFileSyncEnabled = fdp.ConsumeBool();
appInfo.needAppDetail = fdp.ConsumeBool();
appInfo.appDetailAbilityLibraryPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.targetBundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.targetPriority = fdp.ConsumeIntegral<int32_t>();
appInfo.overlayState = fdp.ConsumeIntegral<int32_t>();
appInfo.bundleType = static_cast<BundleType>(fdp.ConsumeIntegralInRange<int32_t>(0, CODE_TWO));
appInfo.compileSdkVersion = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.compileSdkType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.organization = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.installSource = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
appInfo.configuration = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
void GetRandomAbilityRequestInfo(FuzzedDataProvider& fdp, AbilityRequest& info)
{
info.restart = fdp.ConsumeBool();
info.startRecent = fdp.ConsumeBool();
info.uriReservedFlag = fdp.ConsumeBool();
info.isFromIcon = fdp.ConsumeBool();
info.isShellCall = fdp.ConsumeBool();
info.isQueryERMS = fdp.ConsumeBool();
info.isEmbeddedAllowed = fdp.ConsumeBool();
info.callSpecifiedFlagTimeout = fdp.ConsumeBool();
info.hideStartWindow = fdp.ConsumeBool();
info.restartCount = fdp.ConsumeIntegral<uint32_t>();
info.uid = fdp.ConsumeIntegral<uint32_t>();
info.collaboratorType = static_cast<CollaboratorType>(fdp.ConsumeIntegralInRange<int32_t>(0, CODE_TWO));
info.callerTokenRecordId = fdp.ConsumeIntegral<uint32_t>();
info.userId = fdp.ConsumeIntegral<uint32_t>();
info.callerAccessTokenId = fdp.ConsumeIntegral<uint32_t>();
info.specifyTokenId = fdp.ConsumeIntegral<uint32_t>();
info.callerUid = fdp.ConsumeIntegral<uint32_t>();
info.requestCode = fdp.ConsumeIntegral<uint32_t>();
info.callType = static_cast<AbilityCallType>(fdp.ConsumeIntegralInRange<int32_t>(0, CODE_TWO));
info.restartTime = fdp.ConsumeIntegral<uint64_t>();
info.extensionType = static_cast<ExtensionAbilityType>(fdp.ConsumeIntegralInRange<int32_t>(0, CODE_TWO));
info.extensionProcessMode = static_cast<ExtensionProcessMode>(fdp.ConsumeIntegralInRange<int32_t>(0, CODE_TWO));
info.specifiedFlag = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.customProcess = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.reservedBundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.appId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.startTime = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
Want want;
GetRandomAbilityInfo(fdp, info.abilityInfo);
GetRandomApplicationInfo(fdp, info.appInfo);
}
void GetRandomStartOptions(FuzzedDataProvider& fdp, StartOptions& startOptions)
{
startOptions.windowLeftUsed_ = fdp.ConsumeBool();
startOptions.windowTopUsed_ = fdp.ConsumeBool();
startOptions.windowWidthUsed_ = fdp.ConsumeBool();
startOptions.windowHeightUsed_ = fdp.ConsumeBool();
startOptions.minWindowWidthUsed_ = fdp.ConsumeBool();
startOptions.minWindowHeightUsed_ = fdp.ConsumeBool();
startOptions.maxWindowWidthUsed_ = fdp.ConsumeBool();
startOptions.maxWindowHeightUsed_ = fdp.ConsumeBool();
startOptions.requestId_ = fdp.ConsumeRandomLengthString();
startOptions.SetWithAnimation(fdp.ConsumeBool());
startOptions.SetWindowFocused(fdp.ConsumeBool());
startOptions.SetHideStartWindow(fdp.ConsumeBool());
startOptions.SetWindowMode(fdp.ConsumeIntegral<int32_t>());
startOptions.SetDisplayID(fdp.ConsumeIntegral<int32_t>());
startOptions.SetWindowLeft(fdp.ConsumeIntegral<int32_t>());
startOptions.SetWindowTop(fdp.ConsumeIntegral<int32_t>());
startOptions.SetWindowWidth(fdp.ConsumeIntegral<int32_t>());
startOptions.SetWindowHeight(fdp.ConsumeIntegral<int32_t>());
startOptions.SetMinWindowWidth(fdp.ConsumeIntegral<int32_t>());
startOptions.SetMinWindowHeight(fdp.ConsumeIntegral<int32_t>());
startOptions.SetMaxWindowWidth(fdp.ConsumeIntegral<int32_t>());
startOptions.SetMaxWindowHeight(fdp.ConsumeIntegral<int32_t>());
}
void GetRandomDisposedRule(FuzzedDataProvider& fdp, DisposedRule& disposedRule)
{
disposedRule.isEdm = fdp.ConsumeBool();
disposedRule.priority = fdp.ConsumeIntegral<int32_t>();
disposedRule.componentType = static_cast<ComponentType>(fdp.ConsumeIntegralInRange<uint8_t>(CODE_ONE, CODE_TWO));
disposedRule.disposedType = static_cast<DisposedType>(fdp.ConsumeIntegralInRange<uint8_t>(CODE_ONE, CODE_THREE));
disposedRule.controlType = static_cast<ControlType>(fdp.ConsumeIntegralInRange<uint8_t>(CODE_ONE, CODE_TWO));
disposedRule.callerName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
disposedRule.setTime = fdp.ConsumeIntegral<int64_t>();
size_t arraySize = fdp.ConsumeIntegralInRange<size_t>(0, CODE_THREE);
disposedRule.elementList.reserve(arraySize);
for (size_t i = 0; i < arraySize; ++i) {
ElementName elementName;
GenerateElementName(fdp, elementName);
disposedRule.elementList.emplace_back(elementName);
}
}
std::vector<DisposedRule> GetRandomDisposedRulesList(FuzzedDataProvider& fdp, size_t arraySizeMax = CODE_TEN)
{
std::vector<DisposedRule> result;
size_t arraySize = fdp.ConsumeIntegralInRange<size_t>(0, arraySizeMax);
result.reserve(arraySize);
for (size_t i = 0; i < arraySize; ++i) {
DisposedRule disposedRule;
GetRandomDisposedRule(fdp, disposedRule);
result.emplace_back(disposedRule);
}
return result;
}
void GenerateApplicationInfo(FuzzedDataProvider& fdp, ApplicationInfo& applicationInfo)
{
applicationInfo.keepAlive = fdp.ConsumeBool();
applicationInfo.removable = fdp.ConsumeBool();
applicationInfo.singleton = fdp.ConsumeBool();
applicationInfo.userDataClearable = fdp.ConsumeBool();
applicationInfo.allowAppRunWhenDeviceFirstLocked = fdp.ConsumeBool();
applicationInfo.accessible = fdp.ConsumeBool();
applicationInfo.runningResourcesApply = fdp.ConsumeBool();
applicationInfo.associatedWakeUp = fdp.ConsumeBool();
applicationInfo.hideDesktopIcon = fdp.ConsumeBool();
applicationInfo.formVisibleNotify = fdp.ConsumeBool();
applicationInfo.isSystemApp = fdp.ConsumeBool();
applicationInfo.isLauncherApp = fdp.ConsumeBool();
applicationInfo.isFreeInstallApp = fdp.ConsumeBool();
applicationInfo.asanEnabled = fdp.ConsumeBool();
applicationInfo.debug = fdp.ConsumeBool();
applicationInfo.distributedNotificationEnabled = fdp.ConsumeBool();
applicationInfo.installedForAllUser = fdp.ConsumeBool();
applicationInfo.allowEnableNotification = fdp.ConsumeBool();
applicationInfo.allowMultiProcess = fdp.ConsumeBool();
applicationInfo.gwpAsanEnabled = fdp.ConsumeBool();
applicationInfo.enabled = fdp.ConsumeBool();
applicationInfo.hasPlugin = fdp.ConsumeBool();
applicationInfo.multiProjects = fdp.ConsumeBool();
applicationInfo.isCompressNativeLibs = fdp.ConsumeBool();
applicationInfo.tsanEnabled = fdp.ConsumeBool();
applicationInfo.hwasanEnabled = fdp.ConsumeBool();
applicationInfo.ubsanEnabled = fdp.ConsumeBool();
applicationInfo.cloudFileSyncEnabled = fdp.ConsumeBool();
applicationInfo.cloudStructuredDataSyncEnabled = fdp.ConsumeBool();
applicationInfo.needAppDetail = fdp.ConsumeBool();
applicationInfo.versionCode = fdp.ConsumeIntegral<uint32_t>();
applicationInfo.apiCompatibleVersion = fdp.ConsumeIntegral<uint32_t>();
applicationInfo.iconId = fdp.ConsumeIntegral<uint32_t>();
applicationInfo.labelId = fdp.ConsumeIntegral<uint32_t>();
applicationInfo.descriptionId = fdp.ConsumeIntegral<uint32_t>();
applicationInfo.accessTokenId = fdp.ConsumeIntegral<uint32_t>();
applicationInfo.applicationReservedFlag = fdp.ConsumeIntegral<uint32_t>();
applicationInfo.apiTargetVersion = fdp.ConsumeIntegral<int32_t>();
applicationInfo.minCompatibleVersionCode = fdp.ConsumeIntegral<int32_t>();
applicationInfo.supportedModes = fdp.ConsumeIntegral<int32_t>();
applicationInfo.appIndex = fdp.ConsumeIntegral<int32_t>();
applicationInfo.uid = fdp.ConsumeIntegral<int32_t>();
applicationInfo.flags = fdp.ConsumeIntegral<int32_t>();
applicationInfo.targetPriority = fdp.ConsumeIntegral<int32_t>();
applicationInfo.overlayState = fdp.ConsumeIntegral<int32_t>();
applicationInfo.maxChildProcess = fdp.ConsumeIntegral<int32_t>();
applicationInfo.applicationFlags = fdp.ConsumeIntegral<int32_t>();
applicationInfo.bundleType = static_cast<BundleType>(fdp.ConsumeIntegralInRange<int32_t>(0, CODE_FOUR));
applicationInfo.crowdtestDeadline = fdp.ConsumeIntegral<int64_t>();
applicationInfo.accessTokenIdEx = fdp.ConsumeIntegral<uint64_t>();
applicationInfo.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.versionName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.iconPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.asanLogPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.codePath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.dataDir = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.dataBaseDir = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.cacheDir = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.entryDir = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.apiReleaseType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.deviceId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.entityType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.process = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.vendor = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.appPrivilegeLevel = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.appDistributionType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.appProvisionType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.nativeLibraryPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.cpuAbi = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.arkNativeFilePath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.arkNativeFileAbi = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.fingerprint = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.icon = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.entryModuleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.signatureKey = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.targetBundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.compileSdkVersion = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.compileSdkType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.organization = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.appDetailAbilityLibraryPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.installSource = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
applicationInfo.configuration = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
GetRandomResourceInfo(fdp, applicationInfo.iconResource);
GetRandomResourceInfo(fdp, applicationInfo.labelResource);
GetRandomResourceInfo(fdp, applicationInfo.descriptionResource);
applicationInfo.allowCommonEvent = GenerateStringArray(fdp);
applicationInfo.assetAccessGroups = GenerateStringArray(fdp);
applicationInfo.permissions = GenerateStringArray(fdp);
applicationInfo.moduleSourceDirs = GenerateStringArray(fdp);
applicationInfo.targetBundleList = GenerateStringArray(fdp);
}
void GenerateAbilityInfo(FuzzedDataProvider& fdp, AbilityInfo& abilityInfo)
{
abilityInfo.visible = fdp.ConsumeBool();
abilityInfo.isLauncherAbility = fdp.ConsumeBool();
abilityInfo.isNativeAbility = fdp.ConsumeBool();
abilityInfo.enabled = fdp.ConsumeBool();
abilityInfo.supportPipMode = fdp.ConsumeBool();
abilityInfo.formEnabled = fdp.ConsumeBool();
abilityInfo.removeMissionAfterTerminate = fdp.ConsumeBool();
abilityInfo.allowSelfRedirect = fdp.ConsumeBool();
abilityInfo.isModuleJson = fdp.ConsumeBool();
abilityInfo.isStageBasedModel = fdp.ConsumeBool();
abilityInfo.continuable = fdp.ConsumeBool();
abilityInfo.excludeFromMissions = fdp.ConsumeBool();
abilityInfo.unclearableMission = fdp.ConsumeBool();
abilityInfo.excludeFromDock = fdp.ConsumeBool();
abilityInfo.recoverable = fdp.ConsumeBool();
abilityInfo.isolationProcess = fdp.ConsumeBool();
abilityInfo.multiUserShared = fdp.ConsumeBool();
abilityInfo.grantPermission = fdp.ConsumeBool();
abilityInfo.directLaunch = fdp.ConsumeBool();
abilityInfo.linkType = static_cast<LinkType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_TWO));
abilityInfo.labelId = fdp.ConsumeIntegral<uint32_t>();
abilityInfo.descriptionId = fdp.ConsumeIntegral<uint32_t>();
abilityInfo.iconId = fdp.ConsumeIntegral<uint32_t>();
abilityInfo.orientationId = fdp.ConsumeIntegral<uint32_t>();
abilityInfo.formEntity = fdp.ConsumeIntegral<uint32_t>();
abilityInfo.backgroundModes = fdp.ConsumeIntegral<uint32_t>();
abilityInfo.startWindowId = fdp.ConsumeIntegral<uint32_t>();
abilityInfo.startWindowIconId = fdp.ConsumeIntegral<uint32_t>();
abilityInfo.startWindowBackgroundId = fdp.ConsumeIntegral<uint32_t>();
abilityInfo.maxWindowWidth = fdp.ConsumeIntegral<uint32_t>();
abilityInfo.minWindowWidth = fdp.ConsumeIntegral<uint32_t>();
abilityInfo.maxWindowHeight = fdp.ConsumeIntegral<uint32_t>();
abilityInfo.minWindowHeight = fdp.ConsumeIntegral<uint32_t>();
abilityInfo.packageSize = fdp.ConsumeIntegral<uint32_t>();
abilityInfo.minFormHeight = fdp.ConsumeIntegral<int32_t>();
abilityInfo.defaultFormHeight = fdp.ConsumeIntegral<int32_t>();
abilityInfo.minFormWidth = fdp.ConsumeIntegral<int32_t>();
abilityInfo.defaultFormWidth = fdp.ConsumeIntegral<int32_t>();
abilityInfo.priority = fdp.ConsumeIntegral<int32_t>();
abilityInfo.appIndex = fdp.ConsumeIntegral<int32_t>();
abilityInfo.uid = fdp.ConsumeIntegral<int32_t>();
abilityInfo.type = static_cast<AbilityType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_FIVE));
abilityInfo.extensionAbilityType =
static_cast<ExtensionAbilityType>(fdp.ConsumeIntegralInRange<uint16_t>(0, CODE_TWENTYFIVE));
abilityInfo.orientation = static_cast<DisplayOrientation>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_FOURTEEN));
abilityInfo.launchMode = static_cast<LaunchMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_TWO));
abilityInfo.compileMode = static_cast<CompileMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_ONE));
abilityInfo.subType = static_cast<AbilitySubType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_ONE));
abilityInfo.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.iconPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.theme = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.kind = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.extensionTypeName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.srcPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.srcLanguage = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.process = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.uri = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.targetAbility = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.readPermission = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.writePermission = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.package = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.applicationName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.codePath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.resourcePath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.hapPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.srcEntrance = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.startWindow = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.startWindowIcon = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.startWindowBackground = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.preferMultiWindowOrientation = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.originalBundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.appName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.privacyUrl = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.privacyName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.downloadUrl = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.versionName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.className = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.originalClassName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.uriPermissionMode = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.uriPermissionPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.libPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
abilityInfo.deviceId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
void GenerateAbilityRequestInfo(FuzzedDataProvider& fdp, AbilityRequest& info)
{
info.isStartInSplitMode = fdp.ConsumeBool();
info.restart = fdp.ConsumeBool();
info.startRecent = fdp.ConsumeBool();
info.uriReservedFlag = fdp.ConsumeBool();
info.isFromIcon = fdp.ConsumeBool();
info.isShellCall = fdp.ConsumeBool();
info.isTargetPlugin = fdp.ConsumeBool();
info.isQueryERMS = fdp.ConsumeBool();
info.isEmbeddedAllowed = fdp.ConsumeBool();
info.callSpecifiedFlagTimeout = fdp.ConsumeBool();
info.hideStartWindow = fdp.ConsumeBool();
info.primaryWindowId = fdp.ConsumeIntegral<int32_t>();
info.restartCount = fdp.ConsumeIntegral<int32_t>();
info.uid = fdp.ConsumeIntegral<int32_t>();
info.collaboratorType = fdp.ConsumeIntegralInRange<int32_t>(0, CODE_TWO);
info.callerTokenRecordId = fdp.ConsumeIntegral<int32_t>();
info.userId = fdp.ConsumeIntegral<int32_t>();
info.callerAccessTokenId = fdp.ConsumeIntegral<uint32_t>();
info.specifyTokenId = fdp.ConsumeIntegral<uint32_t>();
info.callerUid = fdp.ConsumeIntegral<int>();
info.requestCode = fdp.ConsumeIntegral<int>();
info.callType = static_cast<AbilityCallType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_FOUR));
info.restartTime = fdp.ConsumeIntegral<int64_t>();
info.supportWindowModes.reserve(STRING_MAX_LENGTH);
for (size_t i = 0; i < STRING_MAX_LENGTH; ++i) {
info.supportWindowModes.emplace_back(
static_cast<SupportWindowMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_TWO)));
}
info.extensionProcessMode =
static_cast<ExtensionProcessMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_FOUR) - 1);
info.specifiedFlag = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.customProcess = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.moduleProcess = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.reservedBundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.appId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.startTime = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.hostBundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
GenerateAbilityInfo(fdp, info.abilityInfo);
GenerateApplicationInfo(fdp, info.appInfo);
GetRandomStartOptions(fdp, info.startOptions);
info.hideFailureTipDialog = fdp.ConsumeBool();
info.promotePriority = fdp.ConsumeBool();
info.specifiedFullTokenId = fdp.ConsumeIntegral<uint64_t>();
info.isFromOpenLink = fdp.ConsumeBool();
info.loadExtensionTimeout = fdp.ConsumeIntegral<int32_t>();
}
void GenerateDeviceFeatureMap(FuzzedDataProvider& fdp, std::map<std::string, std::vector<std::string>>& data)
{
const size_t numPairs = fdp.ConsumeIntegralInRange<size_t>(0, STRING_MAX_LENGTH);
for (size_t i = 0; i < numPairs; ++i) {
const std::string key = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
const std::vector<std::string> value = GenerateStringArray(fdp);
data[key] = value;
}
}
void GenerateHapModuleInfo(FuzzedDataProvider& fdp, HapModuleInfo& hapModuleInfo)
{
hapModuleInfo.compressNativeLibs = fdp.ConsumeBool();
hapModuleInfo.isLibIsolated = fdp.ConsumeBool();
hapModuleInfo.deliveryWithInstall = fdp.ConsumeBool();
hapModuleInfo.installationFree = fdp.ConsumeBool();
hapModuleInfo.isModuleJson = fdp.ConsumeBool();
hapModuleInfo.isStageBasedModel = fdp.ConsumeBool();
hapModuleInfo.hasIntent = fdp.ConsumeBool();
hapModuleInfo.resizeable = fdp.ConsumeBool();
hapModuleInfo.descriptionId = fdp.ConsumeIntegral<uint32_t>();
hapModuleInfo.iconId = fdp.ConsumeIntegral<uint32_t>();
hapModuleInfo.labelId = fdp.ConsumeIntegral<uint32_t>();
hapModuleInfo.upgradeFlag = fdp.ConsumeIntegral<int32_t>();
hapModuleInfo.supportedModes = fdp.ConsumeIntegral<int>();
hapModuleInfo.colorMode =
static_cast<ModuleColorMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_TWO) - 1);
hapModuleInfo.moduleType = static_cast<ModuleType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_THREE));
hapModuleInfo.compileMode = fdp.ConsumeBool() ? CompileMode::ES_MODULE : CompileMode::JS_BUNDLE;
hapModuleInfo.aotCompileStatus =
static_cast<AOTCompileStatus>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_FOUR));
hapModuleInfo.isolationMode = static_cast<IsolationMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_THREE));
hapModuleInfo.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.package = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.iconPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.backgroundImg = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.mainAbility = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.srcPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.hashValue = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.hapPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.nativeLibraryPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.cpuAbi = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.mainElementName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.pages = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.systemTheme = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.process = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.resourcePath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.srcEntrance = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.uiSyntax = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.virtualMachine = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.moduleSourceDir = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.buildHash = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.fileContextMenu = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.routerMap = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.packageName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.abilitySrcEntryDelegator = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.abilityStageSrcEntryDelegator = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.appStartup = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
hapModuleInfo.nativeLibraryFileNames = GenerateStringArray(fdp);
hapModuleInfo.reqCapabilities = GenerateStringArray(fdp);
hapModuleInfo.deviceTypes = GenerateStringArray(fdp);
GenerateDeviceFeatureMap(fdp, hapModuleInfo.requiredDeviceFeatures);
}
}
}
}
#endif