* Copyright (c) 2025 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 BMS_FUZZTEST_UTIL_H
#define BMS_FUZZTEST_UTIL_H
#include <fuzzer/FuzzedDataProvider.h>
#include <map>
#include <string>
#include <vector>
#include "bundle_info.h"
#include "bundle_option.h"
#include "bundle_user_info.h"
#include "form_info.h"
#include "install_param.h"
#include "install_plugin_param.h"
#include "shortcut_info.h"
namespace OHOS {
namespace AppExecFwk {
namespace BMSFuzzTestUtil {
constexpr size_t STRING_MAX_LENGTH = 128;
constexpr size_t ARRAY_MAX_LENGTH = 128;
constexpr int32_t MINUS_ONE = -1;
constexpr uint32_t CODE_MIN_ONE = 1;
constexpr uint32_t CODE_MAX_ONE = 1;
constexpr uint32_t CODE_MAX_TWO = 2;
constexpr uint32_t CODE_MAX_THREE = 3;
constexpr uint32_t CODE_MAX_FOUR = 4;
constexpr uint32_t CODE_MAX_FIVE = 5;
constexpr uint32_t ORIENTATION_MAX = 14;
constexpr uint32_t EXTENSION_ABILITY_MAX = 25;
const std::vector<int32_t> USERS {
Constants::ANY_USERID,
Constants::ALL_USERID,
Constants::UNSPECIFIED_USERID,
Constants::INVALID_USERID,
Constants::U1,
Constants::DEFAULT_USERID,
Constants::START_USERID
};
std::vector<std::string> GenerateStringArray(FuzzedDataProvider& fdp, size_t arraySizeMax = ARRAY_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;
}
void GenerateDynamicShortcutInfo(FuzzedDataProvider& fdp, const std::string& shortcutId, const std::string& bundleName,
const int32_t appIndex, ShortcutInfo &shortcutInfo)
{
shortcutInfo.isStatic = fdp.ConsumeBool();
shortcutInfo.isHomeShortcut = fdp.ConsumeBool();
shortcutInfo.isEnables = fdp.ConsumeBool();
shortcutInfo.visible = fdp.ConsumeBool();
shortcutInfo.iconId = fdp.ConsumeIntegral<uint32_t>();
shortcutInfo.labelId = fdp.ConsumeIntegral<uint32_t>();
shortcutInfo.appIndex = appIndex;
shortcutInfo.sourceType = fdp.ConsumeIntegral<int32_t>();
shortcutInfo.id = shortcutId;
shortcutInfo.bundleName = bundleName;
shortcutInfo.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
shortcutInfo.hostAbility = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
shortcutInfo.icon = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
shortcutInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
shortcutInfo.disableMessage = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
Resource GenerateResource(FuzzedDataProvider& fdp)
{
Resource info;
info.id = fdp.ConsumeIntegral<uint32_t>();
info.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
info.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
return info;
}
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.isSupportMultiCard = 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_MAX_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);
applicationInfo.iconResource = GenerateResource(fdp);
applicationInfo.labelResource = GenerateResource(fdp);
applicationInfo.descriptionResource = GenerateResource(fdp);
applicationInfo.allowCommonEvent = GenerateStringArray(fdp);
applicationInfo.assetAccessGroups = GenerateStringArray(fdp);
applicationInfo.permissions = GenerateStringArray(fdp);
applicationInfo.moduleSourceDirs = GenerateStringArray(fdp);
applicationInfo.targetBundleList = GenerateStringArray(fdp);
}
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);
}
template<typename T>
void GenerateAbilityInfo(FuzzedDataProvider& fdp, T &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_MAX_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_MAX_FIVE));
abilityInfo.extensionAbilityType =
static_cast<ExtensionAbilityType>(fdp.ConsumeIntegralInRange<uint16_t>(0, EXTENSION_ABILITY_MAX));
abilityInfo.orientation = static_cast<DisplayOrientation>(fdp.ConsumeIntegralInRange<uint8_t>(0, ORIENTATION_MAX));
abilityInfo.launchMode = static_cast<LaunchMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_TWO));
abilityInfo.compileMode = static_cast<CompileMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_ONE));
abilityInfo.subType = static_cast<AbilitySubType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_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 GenerateBundleInfo(FuzzedDataProvider& fdp, BundleInfo &bundleInfo)
{
bundleInfo.isNewVersion = fdp.ConsumeBool();
bundleInfo.isKeepAlive = fdp.ConsumeBool();
bundleInfo.singleton = fdp.ConsumeBool();
bundleInfo.isPreInstallApp = fdp.ConsumeBool();
bundleInfo.isNativeApp = fdp.ConsumeBool();
bundleInfo.entryInstallationFree = fdp.ConsumeBool();
bundleInfo.isDifferentName = fdp.ConsumeBool();
bundleInfo.versionCode = fdp.ConsumeIntegral<uint32_t>();
bundleInfo.minCompatibleVersionCode = fdp.ConsumeIntegral<uint32_t>();
bundleInfo.compatibleVersion = fdp.ConsumeIntegral<uint32_t>();
bundleInfo.targetVersion = fdp.ConsumeIntegral<uint32_t>();
bundleInfo.appIndex = fdp.ConsumeIntegral<int32_t>();
bundleInfo.minSdkVersion = fdp.ConsumeIntegral<int32_t>();
bundleInfo.maxSdkVersion = fdp.ConsumeIntegral<int32_t>();
bundleInfo.overlayType = fdp.ConsumeIntegralInRange<int32_t>(CODE_MIN_ONE, CODE_MAX_THREE);
bundleInfo.uid = fdp.ConsumeIntegral<int>();
bundleInfo.gid = fdp.ConsumeIntegral<int>();
bundleInfo.installTime = fdp.ConsumeIntegral<int64_t>();
bundleInfo.updateTime = fdp.ConsumeIntegral<int64_t>();
bundleInfo.firstInstallTime = fdp.ConsumeIntegral<int64_t>();
bundleInfo.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
bundleInfo.versionName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
bundleInfo.vendor = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
bundleInfo.releaseType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
bundleInfo.mainEntry = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
bundleInfo.entryModuleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
bundleInfo.appId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
bundleInfo.cpuAbi = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
bundleInfo.seInfo = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
bundleInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
bundleInfo.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
bundleInfo.jointUserId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
GenerateSignatureInfo(fdp, bundleInfo.signatureInfo);
bundleInfo.oldAppIds = GenerateStringArray(fdp);
bundleInfo.hapModuleNames = GenerateStringArray(fdp);
bundleInfo.moduleNames = GenerateStringArray(fdp);
bundleInfo.modulePublicDirs = GenerateStringArray(fdp);
bundleInfo.moduleDirs = GenerateStringArray(fdp);
bundleInfo.moduleResPaths = GenerateStringArray(fdp);
bundleInfo.reqPermissions = GenerateStringArray(fdp);
bundleInfo.defPermissions = GenerateStringArray(fdp);
}
void GenerateMap(FuzzedDataProvider& fdp, std::map<std::string, std::string> &data)
{
const size_t numPairs = fdp.ConsumeIntegralInRange<size_t>(0, ARRAY_MAX_LENGTH);
for (size_t i = 0; i < numPairs; ++i) {
const std::string key = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
const std::string value = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
data[key] = value;
}
}
void GenerateDeviceFeatureMap(FuzzedDataProvider& fdp, std::map<std::string, std::vector<std::string>> &data)
{
const size_t numPairs = fdp.ConsumeIntegralInRange<size_t>(0, ARRAY_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 GenerateInstallParam(FuzzedDataProvider& fdp, InstallParam &installParam)
{
installParam.isKeepData = fdp.ConsumeBool();
installParam.needSavePreInstallInfo = fdp.ConsumeBool();
installParam.isPreInstallApp = fdp.ConsumeBool();
installParam.removable = fdp.ConsumeBool();
installParam.copyHapToInstallPath = fdp.ConsumeBool();
installParam.isAgingUninstall = fdp.ConsumeBool();
installParam.needSendEvent = fdp.ConsumeBool();
installParam.withCopyHaps = fdp.ConsumeBool();
installParam.isSelfUpdate = fdp.ConsumeBool();
installParam.isCallByShell = fdp.ConsumeBool();
installParam.isOTA = fdp.ConsumeBool();
installParam.concentrateSendEvent = fdp.ConsumeBool();
installParam.isRemoveUser = fdp.ConsumeBool();
installParam.isFirstBootInstall = fdp.ConsumeBool();
installParam.isCreateUser = fdp.ConsumeBool();
installParam.allUser = fdp.ConsumeBool();
installParam.isPatch = fdp.ConsumeBool();
installParam.isDataPreloadHap = fdp.ConsumeBool();
installParam.userId = fdp.ConsumeIntegral<int32_t>();
installParam.installFlag =
static_cast<InstallFlag>(fdp.ConsumeIntegralInRange<int8_t>(0, CODE_MAX_ONE));
installParam.installLocation =
static_cast<InstallLocation>(fdp.ConsumeIntegralInRange<int8_t>(CODE_MIN_ONE, CODE_MAX_TWO));
installParam.installBundlePermissionStatus =
static_cast<PermissionStatus>(fdp.ConsumeIntegralInRange<int8_t>(0, CODE_MAX_TWO));
installParam.installEnterpriseBundlePermissionStatus =
static_cast<PermissionStatus>(fdp.ConsumeIntegralInRange<int8_t>(0, CODE_MAX_TWO));
installParam.installEtpNormalBundlePermissionStatus =
static_cast<PermissionStatus>(fdp.ConsumeIntegralInRange<int8_t>(0, CODE_MAX_TWO));
installParam.installEtpMdmBundlePermissionStatus =
static_cast<PermissionStatus>(fdp.ConsumeIntegralInRange<int8_t>(0, CODE_MAX_TWO));
installParam.installInternaltestingBundlePermissionStatus =
static_cast<PermissionStatus>(fdp.ConsumeIntegralInRange<int8_t>(0, CODE_MAX_TWO));
installParam.installUpdateSelfBundlePermissionStatus =
static_cast<PermissionStatus>(fdp.ConsumeIntegralInRange<int8_t>(0, CODE_MAX_TWO));
installParam.preinstallSourceFlag = static_cast<ApplicationInfoFlag>(fdp.ConsumeIntegral<int32_t>());
installParam.crowdtestDeadline = fdp.ConsumeIntegral<int64_t>();
installParam.specifiedDistributionType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
installParam.additionalInfo = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
installParam.appIdentifier = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
installParam.sharedBundleDirPaths = GenerateStringArray(fdp);
GenerateMap(fdp, installParam.parameters);
GenerateMap(fdp, installParam.pgoParams);
GenerateMap(fdp, installParam.hashParams);
GenerateMap(fdp, installParam.verifyCodeParams);
}
void GenerateInstallPluginParam(FuzzedDataProvider& fdp, InstallPluginParam &installPluginParam)
{
installPluginParam.userId = fdp.ConsumeIntegral<int32_t>();
GenerateMap(fdp, installPluginParam.parameters);
}
void GenerateBundleUserInfo(FuzzedDataProvider& fdp, BundleUserInfo &bundleUserInfo)
{
bundleUserInfo.enabled = fdp.ConsumeBool();
bundleUserInfo.userId = fdp.ConsumeIntegral<int32_t>();
bundleUserInfo.setEnabledCaller = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
bundleUserInfo.disabledAbilities = GenerateStringArray(fdp);
bundleUserInfo.overlayModulesState = GenerateStringArray(fdp);
}
void GenerateCompatibleApplicationInfo(FuzzedDataProvider& fdp, CompatibleApplicationInfo &compatibleApplicationInfo)
{
compatibleApplicationInfo.isCompressNativeLibs = fdp.ConsumeBool();
compatibleApplicationInfo.systemApp = fdp.ConsumeBool();
compatibleApplicationInfo.enabled = fdp.ConsumeBool();
compatibleApplicationInfo.debug = fdp.ConsumeBool();
compatibleApplicationInfo.iconId = fdp.ConsumeIntegral<uint32_t>();
compatibleApplicationInfo.labelId = fdp.ConsumeIntegral<uint32_t>();
compatibleApplicationInfo.descriptionId = fdp.ConsumeIntegral<uint32_t>();
compatibleApplicationInfo.supportedModes = fdp.ConsumeIntegral<int32_t>();
compatibleApplicationInfo.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleApplicationInfo.icon = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleApplicationInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleApplicationInfo.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleApplicationInfo.cpuAbi = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleApplicationInfo.process = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleApplicationInfo.permissions = GenerateStringArray(fdp);
}
void GenerateCompatibleAbilityInfo(FuzzedDataProvider& fdp, CompatibleAbilityInfo &compatibleAbilityInfo)
{
compatibleAbilityInfo.visible = fdp.ConsumeBool();
compatibleAbilityInfo.formEnabled = fdp.ConsumeBool();
compatibleAbilityInfo.multiUserShared = fdp.ConsumeBool();
compatibleAbilityInfo.supportPipMode = fdp.ConsumeBool();
compatibleAbilityInfo.grantPermission = fdp.ConsumeBool();
compatibleAbilityInfo.directLaunch = fdp.ConsumeBool();
compatibleAbilityInfo.enabled = fdp.ConsumeBool();
compatibleAbilityInfo.backgroundModes = fdp.ConsumeIntegral<uint32_t>();
compatibleAbilityInfo.packageSize = fdp.ConsumeIntegral<uint32_t>();
compatibleAbilityInfo.formEntity = 1;
compatibleAbilityInfo.iconId = fdp.ConsumeIntegral<uint32_t>();
compatibleAbilityInfo.labelId = fdp.ConsumeIntegral<uint32_t>();
compatibleAbilityInfo.descriptionId = fdp.ConsumeIntegral<uint32_t>();
compatibleAbilityInfo.minFormHeight = fdp.ConsumeIntegral<int32_t>();
compatibleAbilityInfo.defaultFormHeight = fdp.ConsumeIntegral<int32_t>();
compatibleAbilityInfo.minFormWidth = fdp.ConsumeIntegral<int32_t>();
compatibleAbilityInfo.defaultFormWidth = fdp.ConsumeIntegral<int32_t>();
compatibleAbilityInfo.type = static_cast<AbilityType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_FIVE));
compatibleAbilityInfo.subType = static_cast<AbilitySubType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_ONE));
compatibleAbilityInfo.orientation =
static_cast<DisplayOrientation>(fdp.ConsumeIntegralInRange<uint8_t>(0, ORIENTATION_MAX));
compatibleAbilityInfo.launchMode = static_cast<LaunchMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_TWO));
compatibleAbilityInfo.package = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.iconPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.uri = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.process = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.targetAbility = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.appName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.privacyUrl = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.privacyName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.downloadUrl = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.versionName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.readPermission = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.writePermission = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.uriPermissionMode = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.uriPermissionPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.className = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.originalClassName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.deviceId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
compatibleAbilityInfo.permissions = GenerateStringArray(fdp);
compatibleAbilityInfo.deviceTypes = GenerateStringArray(fdp);
compatibleAbilityInfo.deviceCapabilities = GenerateStringArray(fdp);
GenerateCompatibleApplicationInfo(fdp, compatibleAbilityInfo.applicationInfo);
}
void GenerateExtensionAbilityInfo(FuzzedDataProvider& fdp, ExtensionAbilityInfo &extensionAbilityInfo)
{
extensionAbilityInfo.visible = fdp.ConsumeBool();
extensionAbilityInfo.enabled = fdp.ConsumeBool();
extensionAbilityInfo.needCreateSandbox = fdp.ConsumeBool();
extensionAbilityInfo.iconId = fdp.ConsumeIntegral<uint32_t>();
extensionAbilityInfo.labelId = fdp.ConsumeIntegral<uint32_t>();
extensionAbilityInfo.descriptionId = fdp.ConsumeIntegral<uint32_t>();
extensionAbilityInfo.priority = fdp.ConsumeIntegral<int32_t>();
extensionAbilityInfo.uid = fdp.ConsumeIntegral<int32_t>();
extensionAbilityInfo.appIndex = fdp.ConsumeIntegral<int32_t>();
extensionAbilityInfo.type =
static_cast<ExtensionAbilityType>(fdp.ConsumeIntegralInRange<uint16_t>(0, ARRAY_MAX_LENGTH));
extensionAbilityInfo.compileMode = static_cast<CompileMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MIN_ONE));
extensionAbilityInfo.extensionProcessMode =
static_cast<ExtensionProcessMode>(fdp.ConsumeIntegralInRange<int8_t>(-1, CODE_MAX_THREE));
extensionAbilityInfo.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
extensionAbilityInfo.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
extensionAbilityInfo.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
extensionAbilityInfo.srcEntrance = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
extensionAbilityInfo.icon = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
extensionAbilityInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
extensionAbilityInfo.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
extensionAbilityInfo.readPermission = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
extensionAbilityInfo.writePermission = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
extensionAbilityInfo.uri = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
extensionAbilityInfo.extensionTypeName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
extensionAbilityInfo.resourcePath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
extensionAbilityInfo.hapPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
extensionAbilityInfo.process = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
extensionAbilityInfo.customProcess = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
std::vector<std::string> permissions = GenerateStringArray(fdp);
std::vector<std::string> appIdentifierAllowList = GenerateStringArray(fdp);
std::vector<std::string> dataGroupIds = GenerateStringArray(fdp);
std::vector<std::string> validDataGroupIds = GenerateStringArray(fdp);
GenerateApplicationInfo(fdp, extensionAbilityInfo.applicationInfo);
}
void GenerateFormInfo(FuzzedDataProvider& fdp, FormInfo &formInfo)
{
formInfo.defaultFlag = fdp.ConsumeBool();
formInfo.formVisibleNotify = fdp.ConsumeBool();
formInfo.updateEnabled = fdp.ConsumeBool();
formInfo.isStatic = fdp.ConsumeBool();
formInfo.dataProxyEnabled = fdp.ConsumeBool();
formInfo.isDynamic = fdp.ConsumeBool();
formInfo.transparencyEnabled = fdp.ConsumeBool();
formInfo.fontScaleFollowSystem = fdp.ConsumeBool();
formInfo.enableBlurBackground = fdp.ConsumeBool();
formInfo.appFormVisibleNotify = fdp.ConsumeBool();
formInfo.colorMode = static_cast<FormsColorMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MIN_ONE));
formInfo.renderingMode = static_cast<FormsRenderingMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_TWO));
formInfo.displayNameId = fdp.ConsumeIntegral<uint32_t>();
formInfo.descriptionId = fdp.ConsumeIntegral<uint32_t>();
formInfo.versionCode = fdp.ConsumeIntegral<uint32_t>();
formInfo.updateDuration = fdp.ConsumeIntegral<int32_t>();
formInfo.defaultDimension = fdp.ConsumeIntegral<int32_t>();
formInfo.privacyLevel = fdp.ConsumeIntegral<int32_t>();
formInfo.type = static_cast<FormType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_TWO));
formInfo.uiSyntax = static_cast<FormType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_TWO));
formInfo.bundleType = static_cast<BundleType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_FOUR));
formInfo.package = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
formInfo.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
formInfo.originalBundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
formInfo.relatedBundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
formInfo.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
formInfo.abilityName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
formInfo.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
formInfo.displayName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
formInfo.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
formInfo.jsComponentName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
formInfo.deepLink = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
formInfo.formConfigAbility = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
formInfo.scheduledUpdateTime = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
formInfo.multiScheduledUpdateTime = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
formInfo.src = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
void GenerateShortcutInfo(FuzzedDataProvider& fdp, ShortcutInfo &shortcutInfo)
{
shortcutInfo.isStatic = fdp.ConsumeBool();
shortcutInfo.isHomeShortcut = fdp.ConsumeBool();
shortcutInfo.isEnables = fdp.ConsumeBool();
shortcutInfo.visible = fdp.ConsumeBool();
shortcutInfo.iconId = fdp.ConsumeIntegral<uint32_t>();
shortcutInfo.labelId = fdp.ConsumeIntegral<uint32_t>();
shortcutInfo.appIndex = fdp.ConsumeIntegral<int32_t>();
shortcutInfo.sourceType = fdp.ConsumeIntegral<int32_t>();
shortcutInfo.id = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
shortcutInfo.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
shortcutInfo.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
shortcutInfo.hostAbility = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
shortcutInfo.icon = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
shortcutInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
shortcutInfo.disableMessage = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
}
int32_t GenerateRandomUser(FuzzedDataProvider& fdp)
{
uint8_t usersSize = USERS.size();
if (usersSize == 0) {
return Constants::START_USERID;
}
uint8_t index = fdp.ConsumeIntegralInRange<uint8_t>(0, usersSize) % usersSize;
return USERS[index];
}
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<int8_t>(MINUS_ONE, CODE_MAX_ONE));
hapModuleInfo.moduleType = static_cast<ModuleType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_THREE));
hapModuleInfo.compileMode = fdp.ConsumeBool() ? CompileMode::ES_MODULE : CompileMode::JS_BUNDLE;
hapModuleInfo.aotCompileStatus =
static_cast<AOTCompileStatus>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_FIVE));
hapModuleInfo.isolationMode = static_cast<IsolationMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_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);
}
void GenerateBundleOptionInfo(FuzzedDataProvider& fdp, BundleOptionInfo &bundleOptionInfo)
{
bundleOptionInfo.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
bundleOptionInfo.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
bundleOptionInfo.abilityName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
bundleOptionInfo.userId = fdp.ConsumeIntegral<int32_t>();
bundleOptionInfo.appIndex = fdp.ConsumeIntegral<int32_t>();
}
}
}
}
#endif