1 /*
2 * Copyright (c) 2025 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16 #ifndef BMS_FUZZTEST_UTIL_H
17 #define BMS_FUZZTEST_UTIL_H
18
19 #include <fuzzer/FuzzedDataProvider.h>
20 #include <map>
21 #include <string>
22 #include <vector>
23
24 #include "bundle_info.h"
25 #include "bundle_user_info.h"
26 #include "form_info.h"
27 #include "install_param.h"
28 #include "install_plugin_param.h"
29 #include "shortcut_info.h"
30
31 namespace OHOS {
32 namespace AppExecFwk {
33 namespace BMSFuzzTestUtil {
34 constexpr size_t STRING_MAX_LENGTH = 128;
35 constexpr size_t ARRAY_MAX_LENGTH = 128;
36 constexpr int32_t MINUS_ONE = -1;
37 constexpr uint32_t CODE_MIN_ONE = 1;
38 constexpr uint32_t CODE_MAX_ONE = 1;
39 constexpr uint32_t CODE_MAX_TWO = 2;
40 constexpr uint32_t CODE_MAX_THREE = 3;
41 constexpr uint32_t CODE_MAX_FOUR = 4;
42 constexpr uint32_t CODE_MAX_FIVE = 5;
43 constexpr uint32_t ORIENTATION_MAX = 14;
44 constexpr uint32_t EXTENSION_ABILITY_MAX = 25;
45 const std::vector<int32_t> USERS {
46 Constants::ANY_USERID,
47 Constants::ALL_USERID,
48 Constants::UNSPECIFIED_USERID,
49 Constants::INVALID_USERID,
50 Constants::U1,
51 Constants::DEFAULT_USERID,
52 Constants::START_USERID
53 };
54
55 std::vector<std::string> GenerateStringArray(FuzzedDataProvider& fdp, size_t arraySizeMax = ARRAY_MAX_LENGTH,
56 size_t stringSize = STRING_MAX_LENGTH)
57 {
58 std::vector<std::string> result;
59 size_t arraySize = fdp.ConsumeIntegralInRange<size_t>(0, arraySizeMax);
60 result.reserve(arraySize);
61
62 for (size_t i = 0; i < arraySize; ++i) {
63 std::string str = fdp.ConsumeRandomLengthString(stringSize);
64 result.emplace_back(str);
65 }
66
67 return result;
68 }
69
GenerateResource(FuzzedDataProvider & fdp)70 Resource GenerateResource(FuzzedDataProvider& fdp)
71 {
72 Resource info;
73 info.id = fdp.ConsumeIntegral<uint32_t>();
74 info.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
75 info.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
76 return info;
77 }
78
GenerateApplicationInfo(FuzzedDataProvider & fdp,ApplicationInfo & applicationInfo)79 void GenerateApplicationInfo(FuzzedDataProvider& fdp, ApplicationInfo &applicationInfo)
80 {
81 applicationInfo.keepAlive = fdp.ConsumeBool();
82 applicationInfo.removable = fdp.ConsumeBool();
83 applicationInfo.singleton = fdp.ConsumeBool();
84 applicationInfo.userDataClearable = fdp.ConsumeBool();
85 applicationInfo.allowAppRunWhenDeviceFirstLocked = fdp.ConsumeBool();
86 applicationInfo.accessible = fdp.ConsumeBool();
87 applicationInfo.runningResourcesApply = fdp.ConsumeBool();
88 applicationInfo.associatedWakeUp = fdp.ConsumeBool();
89 applicationInfo.hideDesktopIcon = fdp.ConsumeBool();
90 applicationInfo.formVisibleNotify = fdp.ConsumeBool();
91 applicationInfo.isSystemApp = fdp.ConsumeBool();
92 applicationInfo.isLauncherApp = fdp.ConsumeBool();
93 applicationInfo.isFreeInstallApp = fdp.ConsumeBool();
94 applicationInfo.asanEnabled = fdp.ConsumeBool();
95 applicationInfo.debug = fdp.ConsumeBool();
96 applicationInfo.distributedNotificationEnabled = fdp.ConsumeBool();
97 applicationInfo.installedForAllUser = fdp.ConsumeBool();
98 applicationInfo.allowEnableNotification = fdp.ConsumeBool();
99 applicationInfo.allowMultiProcess = fdp.ConsumeBool();
100 applicationInfo.gwpAsanEnabled = fdp.ConsumeBool();
101 applicationInfo.enabled = fdp.ConsumeBool();
102 applicationInfo.hasPlugin = fdp.ConsumeBool();
103 applicationInfo.multiProjects = fdp.ConsumeBool();
104 applicationInfo.isCompressNativeLibs = fdp.ConsumeBool();
105 applicationInfo.tsanEnabled = fdp.ConsumeBool();
106 applicationInfo.hwasanEnabled = fdp.ConsumeBool();
107 applicationInfo.ubsanEnabled = fdp.ConsumeBool();
108 applicationInfo.cloudFileSyncEnabled = fdp.ConsumeBool();
109 applicationInfo.cloudStructuredDataSyncEnabled = fdp.ConsumeBool();
110 applicationInfo.needAppDetail = fdp.ConsumeBool();
111 applicationInfo.versionCode = fdp.ConsumeIntegral<uint32_t>();
112 applicationInfo.apiCompatibleVersion = fdp.ConsumeIntegral<uint32_t>();
113 applicationInfo.iconId = fdp.ConsumeIntegral<uint32_t>();
114 applicationInfo.labelId = fdp.ConsumeIntegral<uint32_t>();
115 applicationInfo.descriptionId = fdp.ConsumeIntegral<uint32_t>();
116 applicationInfo.accessTokenId = fdp.ConsumeIntegral<uint32_t>();
117 applicationInfo.applicationReservedFlag = fdp.ConsumeIntegral<uint32_t>();
118 applicationInfo.apiTargetVersion = fdp.ConsumeIntegral<int32_t>();
119 applicationInfo.minCompatibleVersionCode = fdp.ConsumeIntegral<int32_t>();
120 applicationInfo.supportedModes = fdp.ConsumeIntegral<int32_t>();
121 applicationInfo.appIndex = fdp.ConsumeIntegral<int32_t>();
122 applicationInfo.uid = fdp.ConsumeIntegral<int32_t>();
123 applicationInfo.flags = fdp.ConsumeIntegral<int32_t>();
124 applicationInfo.targetPriority = fdp.ConsumeIntegral<int32_t>();
125 applicationInfo.overlayState = fdp.ConsumeIntegral<int32_t>();
126 applicationInfo.maxChildProcess = fdp.ConsumeIntegral<int32_t>();
127 applicationInfo.applicationFlags = fdp.ConsumeIntegral<int32_t>();
128 applicationInfo.bundleType = static_cast<BundleType>(fdp.ConsumeIntegralInRange<int32_t>(0, CODE_MAX_FOUR));
129 applicationInfo.crowdtestDeadline = fdp.ConsumeIntegral<int64_t>();
130 applicationInfo.accessTokenIdEx = fdp.ConsumeIntegral<uint64_t>();
131 applicationInfo.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
132 applicationInfo.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
133 applicationInfo.versionName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
134 applicationInfo.iconPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
135 applicationInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
136 applicationInfo.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
137 applicationInfo.asanLogPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
138 applicationInfo.codePath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
139 applicationInfo.dataDir = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
140 applicationInfo.dataBaseDir = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
141 applicationInfo.cacheDir = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
142 applicationInfo.entryDir = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
143 applicationInfo.apiReleaseType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
144 applicationInfo.deviceId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
145 applicationInfo.entityType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
146 applicationInfo.process = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
147 applicationInfo.vendor = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
148 applicationInfo.appPrivilegeLevel = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
149 applicationInfo.appDistributionType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
150 applicationInfo.appProvisionType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
151 applicationInfo.nativeLibraryPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
152 applicationInfo.cpuAbi = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
153 applicationInfo.arkNativeFilePath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
154 applicationInfo.arkNativeFileAbi = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
155 applicationInfo.fingerprint = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
156 applicationInfo.icon = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
157 applicationInfo.entryModuleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
158 applicationInfo.signatureKey = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
159 applicationInfo.targetBundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
160 applicationInfo.compileSdkVersion = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
161 applicationInfo.compileSdkType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
162 applicationInfo.organization = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
163 applicationInfo.appDetailAbilityLibraryPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
164 applicationInfo.installSource = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
165 applicationInfo.configuration = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
166 applicationInfo.iconResource = GenerateResource(fdp);
167 applicationInfo.labelResource = GenerateResource(fdp);
168 applicationInfo.descriptionResource = GenerateResource(fdp);
169
170 applicationInfo.allowCommonEvent = GenerateStringArray(fdp);
171 applicationInfo.assetAccessGroups = GenerateStringArray(fdp);
172
173 // assign when calling the get interface
174 applicationInfo.permissions = GenerateStringArray(fdp);
175 applicationInfo.moduleSourceDirs = GenerateStringArray(fdp);
176 // Installation-free
177 applicationInfo.targetBundleList = GenerateStringArray(fdp);
178 }
179
GenerateSignatureInfo(FuzzedDataProvider & fdp,SignatureInfo & signatureInfo)180 void GenerateSignatureInfo(FuzzedDataProvider& fdp, SignatureInfo &signatureInfo)
181 {
182 signatureInfo.appId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
183 signatureInfo.fingerprint = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
184 signatureInfo.appIdentifier = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
185 signatureInfo.certificate = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
186 }
187
188 template<typename T>
GenerateAbilityInfo(FuzzedDataProvider & fdp,T & abilityInfo)189 void GenerateAbilityInfo(FuzzedDataProvider& fdp, T &abilityInfo)
190 {
191 abilityInfo.visible = fdp.ConsumeBool();
192 abilityInfo.isLauncherAbility = fdp.ConsumeBool();
193 abilityInfo.isNativeAbility = fdp.ConsumeBool();
194 abilityInfo.enabled = fdp.ConsumeBool();
195 abilityInfo.supportPipMode = fdp.ConsumeBool();
196 abilityInfo.formEnabled = fdp.ConsumeBool();
197 abilityInfo.removeMissionAfterTerminate = fdp.ConsumeBool();
198 abilityInfo.isModuleJson = fdp.ConsumeBool();
199 abilityInfo.isStageBasedModel = fdp.ConsumeBool();
200 abilityInfo.continuable = fdp.ConsumeBool();
201 // whether to display in the missions list
202 abilityInfo.excludeFromMissions = fdp.ConsumeBool();
203 abilityInfo.unclearableMission = fdp.ConsumeBool();
204 abilityInfo.excludeFromDock = fdp.ConsumeBool();
205 // whether to support recover UI interface
206 abilityInfo.recoverable = fdp.ConsumeBool();
207 abilityInfo.isolationProcess = fdp.ConsumeBool();
208 abilityInfo.multiUserShared = fdp.ConsumeBool();
209 abilityInfo.grantPermission = fdp.ConsumeBool();
210 abilityInfo.directLaunch = fdp.ConsumeBool();
211
212 abilityInfo.linkType = static_cast<LinkType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_TWO));
213 abilityInfo.labelId = fdp.ConsumeIntegral<uint32_t>();
214 abilityInfo.descriptionId = fdp.ConsumeIntegral<uint32_t>();
215 abilityInfo.iconId = fdp.ConsumeIntegral<uint32_t>();
216 abilityInfo.orientationId = fdp.ConsumeIntegral<uint32_t>();
217 abilityInfo.formEntity = fdp.ConsumeIntegral<uint32_t>();
218 abilityInfo.backgroundModes = fdp.ConsumeIntegral<uint32_t>();
219 abilityInfo.startWindowId = fdp.ConsumeIntegral<uint32_t>();
220 abilityInfo.startWindowIconId = fdp.ConsumeIntegral<uint32_t>();
221 abilityInfo.startWindowBackgroundId = fdp.ConsumeIntegral<uint32_t>();
222 abilityInfo.maxWindowWidth = fdp.ConsumeIntegral<uint32_t>();
223 abilityInfo.minWindowWidth = fdp.ConsumeIntegral<uint32_t>();
224 abilityInfo.maxWindowHeight = fdp.ConsumeIntegral<uint32_t>();
225 abilityInfo.minWindowHeight = fdp.ConsumeIntegral<uint32_t>();
226 abilityInfo.packageSize = fdp.ConsumeIntegral<uint32_t>();
227 abilityInfo.minFormHeight = fdp.ConsumeIntegral<int32_t>();
228 abilityInfo.defaultFormHeight = fdp.ConsumeIntegral<int32_t>();
229 abilityInfo.minFormWidth = fdp.ConsumeIntegral<int32_t>();
230 abilityInfo.defaultFormWidth = fdp.ConsumeIntegral<int32_t>();
231 abilityInfo.priority = fdp.ConsumeIntegral<int32_t>();
232 abilityInfo.appIndex = fdp.ConsumeIntegral<int32_t>();
233 abilityInfo.uid = fdp.ConsumeIntegral<int32_t>();
234 abilityInfo.type = static_cast<AbilityType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_FIVE));
235 abilityInfo.extensionAbilityType =
236 static_cast<ExtensionAbilityType>(fdp.ConsumeIntegralInRange<uint16_t>(0, EXTENSION_ABILITY_MAX));
237 abilityInfo.orientation = static_cast<DisplayOrientation>(fdp.ConsumeIntegralInRange<uint8_t>(0, ORIENTATION_MAX));
238 abilityInfo.launchMode = static_cast<LaunchMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_TWO));
239 abilityInfo.compileMode = static_cast<CompileMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_ONE));
240 abilityInfo.subType = static_cast<AbilitySubType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_ONE));
241
242 abilityInfo.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH); // ability name, only the main class name
243 abilityInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
244 abilityInfo.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
245 abilityInfo.iconPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
246 abilityInfo.theme = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
247 abilityInfo.kind = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH); // ability category
248 abilityInfo.extensionTypeName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
249 abilityInfo.srcPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
250 abilityInfo.srcLanguage = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
251
252 abilityInfo.process = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
253 abilityInfo.uri = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
254 abilityInfo.targetAbility = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
255 abilityInfo.readPermission = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
256 abilityInfo.writePermission = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
257
258 // set when install
259 abilityInfo.package = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH); // the "module.package" in config.json
260 abilityInfo.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
261 abilityInfo.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH); // the "module.name" in config.json
262 abilityInfo.applicationName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH); // the "bundlename" in config.json
263
264 abilityInfo.codePath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH); // ability main code path with name
265 abilityInfo.resourcePath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH); // resource path for resource init
266 abilityInfo.hapPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
267
268 abilityInfo.srcEntrance = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
269
270 // configuration fields on startup page
271 abilityInfo.startWindow = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
272 abilityInfo.startWindowIcon = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
273 abilityInfo.startWindowBackground = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
274 abilityInfo.preferMultiWindowOrientation = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
275
276 abilityInfo.originalBundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
277 abilityInfo.appName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
278 abilityInfo.privacyUrl = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
279 abilityInfo.privacyName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
280 abilityInfo.downloadUrl = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
281 abilityInfo.versionName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
282 abilityInfo.className = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
283 abilityInfo.originalClassName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
284 abilityInfo.uriPermissionMode = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
285 abilityInfo.uriPermissionPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
286 abilityInfo.libPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
287 abilityInfo.deviceId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
288 }
289
GenerateBundleInfo(FuzzedDataProvider & fdp,BundleInfo & bundleInfo)290 void GenerateBundleInfo(FuzzedDataProvider& fdp, BundleInfo &bundleInfo)
291 {
292 bundleInfo.isNewVersion = fdp.ConsumeBool();
293 bundleInfo.isKeepAlive = fdp.ConsumeBool();
294 bundleInfo.singleton = fdp.ConsumeBool();
295 bundleInfo.isPreInstallApp = fdp.ConsumeBool();
296 bundleInfo.isNativeApp = fdp.ConsumeBool();
297 bundleInfo.entryInstallationFree = fdp.ConsumeBool();
298 bundleInfo.isDifferentName = fdp.ConsumeBool();
299 bundleInfo.versionCode = fdp.ConsumeIntegral<uint32_t>();
300 bundleInfo.minCompatibleVersionCode = fdp.ConsumeIntegral<uint32_t>();
301 bundleInfo.compatibleVersion = fdp.ConsumeIntegral<uint32_t>();
302 bundleInfo.targetVersion = fdp.ConsumeIntegral<uint32_t>();
303 bundleInfo.appIndex = fdp.ConsumeIntegral<int32_t>();
304 bundleInfo.minSdkVersion = fdp.ConsumeIntegral<int32_t>();
305 bundleInfo.maxSdkVersion = fdp.ConsumeIntegral<int32_t>();
306 bundleInfo.overlayType = fdp.ConsumeIntegralInRange<int32_t>(CODE_MIN_ONE, CODE_MAX_THREE);
307 bundleInfo.uid = fdp.ConsumeIntegral<int>();
308 bundleInfo.gid = fdp.ConsumeIntegral<int>();
309 bundleInfo.installTime = fdp.ConsumeIntegral<int64_t>();
310 bundleInfo.updateTime = fdp.ConsumeIntegral<int64_t>();
311 bundleInfo.firstInstallTime = fdp.ConsumeIntegral<int64_t>();
312 bundleInfo.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
313 bundleInfo.versionName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
314 bundleInfo.vendor = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
315 bundleInfo.releaseType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
316 bundleInfo.mainEntry = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
317 bundleInfo.entryModuleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
318 bundleInfo.appId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
319 bundleInfo.cpuAbi = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
320 bundleInfo.seInfo = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
321 bundleInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
322 bundleInfo.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
323 bundleInfo.jointUserId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
324
325 GenerateSignatureInfo(fdp, bundleInfo.signatureInfo);
326
327 bundleInfo.oldAppIds = GenerateStringArray(fdp);
328 bundleInfo.hapModuleNames = GenerateStringArray(fdp); // the "module.package" in each config.json
329 bundleInfo.moduleNames = GenerateStringArray(fdp); // the "module.name" in each config.json
330 bundleInfo.modulePublicDirs = GenerateStringArray(fdp); // the public paths of all modules of the application.
331 bundleInfo.moduleDirs = GenerateStringArray(fdp); // the paths of all modules of the application.
332 bundleInfo.moduleResPaths = GenerateStringArray(fdp); // the paths of all resources paths.
333
334 bundleInfo.reqPermissions = GenerateStringArray(fdp);
335 bundleInfo.defPermissions = GenerateStringArray(fdp);
336 }
337
GenerateMap(FuzzedDataProvider & fdp,std::map<std::string,std::string> & data)338 void GenerateMap(FuzzedDataProvider& fdp, std::map<std::string, std::string> &data)
339 {
340 // Generate number of key-value pairs (0 to 128)
341 const size_t numPairs = fdp.ConsumeIntegralInRange<size_t>(0, ARRAY_MAX_LENGTH);
342
343 for (size_t i = 0; i < numPairs; ++i) {
344 // Generate key with maximum length 128
345 const std::string key = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
346
347 // Generate value with maximum length 128
348 const std::string value = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
349
350 // Insert into map (allow overwriting existing keys)
351 data[key] = value;
352 }
353 }
354
GenerateDeviceFeatureMap(FuzzedDataProvider & fdp,std::map<std::string,std::vector<std::string>> & data)355 void GenerateDeviceFeatureMap(FuzzedDataProvider& fdp, std::map<std::string, std::vector<std::string>> &data)
356 {
357 // Generate number of key-value pairs (0 to 128)
358 const size_t numPairs = fdp.ConsumeIntegralInRange<size_t>(0, ARRAY_MAX_LENGTH);
359
360 for (size_t i = 0; i < numPairs; ++i) {
361 // Generate key with maximum length 128
362 const std::string key = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
363
364 // Generate vector value
365 const std::vector<std::string> value = GenerateStringArray(fdp);
366
367 // Insert into map (allow overwriting existing keys)
368 data[key] = value;
369 }
370 }
371
GenerateInstallParam(FuzzedDataProvider & fdp,InstallParam & installParam)372 void GenerateInstallParam(FuzzedDataProvider& fdp, InstallParam &installParam)
373 {
374 installParam.isKeepData = fdp.ConsumeBool();
375 installParam.needSavePreInstallInfo = fdp.ConsumeBool();
376 installParam.isPreInstallApp = fdp.ConsumeBool();
377 installParam.removable = fdp.ConsumeBool();
378 // whether need copy hap to install path
379 installParam.copyHapToInstallPath = fdp.ConsumeBool();
380 // is aging Cause uninstall.
381 installParam.isAgingUninstall = fdp.ConsumeBool();
382 installParam.needSendEvent = fdp.ConsumeBool();
383 installParam.withCopyHaps = fdp.ConsumeBool();
384 // for MDM self update
385 installParam.isSelfUpdate = fdp.ConsumeBool();
386 // is shell token
387 installParam.isCallByShell = fdp.ConsumeBool();
388 // for AOT
389 installParam.isOTA = fdp.ConsumeBool();
390 installParam.concentrateSendEvent = fdp.ConsumeBool();
391 installParam.isRemoveUser = fdp.ConsumeBool();
392 installParam.allUser = fdp.ConsumeBool();
393 installParam.isPatch = fdp.ConsumeBool();
394 installParam.isDataPreloadHap = fdp.ConsumeBool();
395 installParam.userId = fdp.ConsumeIntegral<int32_t>();
396 installParam.installFlag =
397 static_cast<InstallFlag>(fdp.ConsumeIntegralInRange<int8_t>(0, CODE_MAX_ONE));
398 installParam.installLocation =
399 static_cast<InstallLocation>(fdp.ConsumeIntegralInRange<int8_t>(CODE_MIN_ONE, CODE_MAX_TWO));
400 installParam.installBundlePermissionStatus =
401 static_cast<PermissionStatus>(fdp.ConsumeIntegralInRange<int8_t>(0, CODE_MAX_TWO));
402 installParam.installEnterpriseBundlePermissionStatus =
403 static_cast<PermissionStatus>(fdp.ConsumeIntegralInRange<int8_t>(0, CODE_MAX_TWO));
404 installParam.installEtpNormalBundlePermissionStatus =
405 static_cast<PermissionStatus>(fdp.ConsumeIntegralInRange<int8_t>(0, CODE_MAX_TWO));
406 installParam.installEtpMdmBundlePermissionStatus =
407 static_cast<PermissionStatus>(fdp.ConsumeIntegralInRange<int8_t>(0, CODE_MAX_TWO));
408 installParam.installInternaltestingBundlePermissionStatus =
409 static_cast<PermissionStatus>(fdp.ConsumeIntegralInRange<int8_t>(0, CODE_MAX_TWO));
410 installParam.installUpdateSelfBundlePermissionStatus =
411 static_cast<PermissionStatus>(fdp.ConsumeIntegralInRange<int8_t>(0, CODE_MAX_TWO));
412 installParam.preinstallSourceFlag = static_cast<ApplicationInfoFlag>(fdp.ConsumeIntegral<int32_t>());
413 installParam.crowdtestDeadline = fdp.ConsumeIntegral<int64_t>(); // for crowdtesting type hap
414 // Indicates the distribution type
415 installParam.specifiedDistributionType = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
416 // Indicates the additional Info
417 installParam.additionalInfo = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
418 installParam.appIdentifier = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
419 // shared bundle directory paths
420 installParam.sharedBundleDirPaths = GenerateStringArray(fdp);
421 GenerateMap(fdp, installParam.parameters);
422 GenerateMap(fdp, installParam.pgoParams);
423 GenerateMap(fdp, installParam.hashParams);
424 GenerateMap(fdp, installParam.verifyCodeParams);
425 }
426
GenerateInstallPluginParam(FuzzedDataProvider & fdp,InstallPluginParam & installPluginParam)427 void GenerateInstallPluginParam(FuzzedDataProvider& fdp, InstallPluginParam &installPluginParam)
428 {
429 installPluginParam.userId = fdp.ConsumeIntegral<int32_t>();
430 GenerateMap(fdp, installPluginParam.parameters);
431 }
432
GenerateBundleUserInfo(FuzzedDataProvider & fdp,BundleUserInfo & bundleUserInfo)433 void GenerateBundleUserInfo(FuzzedDataProvider& fdp, BundleUserInfo &bundleUserInfo)
434 {
435 bundleUserInfo.enabled = fdp.ConsumeBool();
436 bundleUserInfo.userId = fdp.ConsumeIntegral<int32_t>();
437 bundleUserInfo.setEnabledCaller = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
438 bundleUserInfo.disabledAbilities = GenerateStringArray(fdp);
439 bundleUserInfo.overlayModulesState = GenerateStringArray(fdp);
440 }
441
GenerateCompatibleApplicationInfo(FuzzedDataProvider & fdp,CompatibleApplicationInfo & compatibleApplicationInfo)442 void GenerateCompatibleApplicationInfo(FuzzedDataProvider& fdp, CompatibleApplicationInfo &compatibleApplicationInfo)
443 {
444 compatibleApplicationInfo.isCompressNativeLibs = fdp.ConsumeBool();
445 compatibleApplicationInfo.systemApp = fdp.ConsumeBool();
446 compatibleApplicationInfo.enabled = fdp.ConsumeBool();
447 compatibleApplicationInfo.debug = fdp.ConsumeBool();
448 compatibleApplicationInfo.iconId = fdp.ConsumeIntegral<uint32_t>();
449 compatibleApplicationInfo.labelId = fdp.ConsumeIntegral<uint32_t>();
450 compatibleApplicationInfo.descriptionId = fdp.ConsumeIntegral<uint32_t>();
451 compatibleApplicationInfo.supportedModes = fdp.ConsumeIntegral<int32_t>(); // supported modes.
452 // items set when installing.
453 compatibleApplicationInfo.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
454 compatibleApplicationInfo.icon = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
455 compatibleApplicationInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
456 compatibleApplicationInfo.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
457 compatibleApplicationInfo.cpuAbi = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
458 compatibleApplicationInfo.process = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
459 compatibleApplicationInfo.permissions = GenerateStringArray(fdp);
460 }
461
GenerateCompatibleAbilityInfo(FuzzedDataProvider & fdp,CompatibleAbilityInfo & compatibleAbilityInfo)462 void GenerateCompatibleAbilityInfo(FuzzedDataProvider& fdp, CompatibleAbilityInfo &compatibleAbilityInfo)
463 {
464 compatibleAbilityInfo.visible = fdp.ConsumeBool();
465 compatibleAbilityInfo.formEnabled = fdp.ConsumeBool();
466 compatibleAbilityInfo.multiUserShared = fdp.ConsumeBool();
467 compatibleAbilityInfo.supportPipMode = fdp.ConsumeBool();
468 compatibleAbilityInfo.grantPermission = fdp.ConsumeBool();
469 compatibleAbilityInfo.directLaunch = fdp.ConsumeBool();
470 compatibleAbilityInfo.enabled = fdp.ConsumeBool();
471 compatibleAbilityInfo.backgroundModes = fdp.ConsumeIntegral<uint32_t>();
472 compatibleAbilityInfo.packageSize = fdp.ConsumeIntegral<uint32_t>();
473
474 // form widget info
475 compatibleAbilityInfo.formEntity = 1; // where form can be displayed
476
477 compatibleAbilityInfo.iconId = fdp.ConsumeIntegral<uint32_t>();
478 compatibleAbilityInfo.labelId = fdp.ConsumeIntegral<uint32_t>();
479 compatibleAbilityInfo.descriptionId = fdp.ConsumeIntegral<uint32_t>();
480 compatibleAbilityInfo.minFormHeight = fdp.ConsumeIntegral<int32_t>(); // minimum height of ability.
481 compatibleAbilityInfo.defaultFormHeight = fdp.ConsumeIntegral<int32_t>(); // default height of ability.
482 compatibleAbilityInfo.minFormWidth = fdp.ConsumeIntegral<int32_t>(); // minimum width of ability.
483 compatibleAbilityInfo.defaultFormWidth = fdp.ConsumeIntegral<int32_t>(); // default width of ability.
484 // deprecated: remove this field in new package format.
485 compatibleAbilityInfo.type = static_cast<AbilityType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_FIVE));
486 compatibleAbilityInfo.subType = static_cast<AbilitySubType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_ONE));
487 compatibleAbilityInfo.orientation =
488 static_cast<DisplayOrientation>(fdp.ConsumeIntegralInRange<uint8_t>(0, ORIENTATION_MAX));
489 compatibleAbilityInfo.launchMode = static_cast<LaunchMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_TWO));
490 // deprecated: ability code class simple name, use 'className' instead.
491 compatibleAbilityInfo.package = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
492 compatibleAbilityInfo.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
493 compatibleAbilityInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH); // display name on screen.
494 compatibleAbilityInfo.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
495 compatibleAbilityInfo.iconPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
496 // used as icon data (base64) for WEB Ability.
497 compatibleAbilityInfo.uri = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH); // uri of ability.
498 compatibleAbilityInfo.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
499 // indicates the name of the .hap package to which the capability belongs.
500 compatibleAbilityInfo.process = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
501 compatibleAbilityInfo.targetAbility = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
502 compatibleAbilityInfo.appName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
503 compatibleAbilityInfo.privacyUrl = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
504 compatibleAbilityInfo.privacyName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
505 compatibleAbilityInfo.downloadUrl = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
506 compatibleAbilityInfo.versionName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
507 compatibleAbilityInfo.readPermission = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
508 compatibleAbilityInfo.writePermission = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
509 compatibleAbilityInfo.uriPermissionMode = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
510 compatibleAbilityInfo.uriPermissionPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
511
512 // set when install
513 compatibleAbilityInfo.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
514 compatibleAbilityInfo.className = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
515 compatibleAbilityInfo.originalClassName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
516 compatibleAbilityInfo.deviceId = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
517 compatibleAbilityInfo.permissions = GenerateStringArray(fdp);
518 compatibleAbilityInfo.deviceTypes = GenerateStringArray(fdp);
519 compatibleAbilityInfo.deviceCapabilities = GenerateStringArray(fdp);
520 GenerateCompatibleApplicationInfo(fdp, compatibleAbilityInfo.applicationInfo);
521 }
522
GenerateExtensionAbilityInfo(FuzzedDataProvider & fdp,ExtensionAbilityInfo & extensionAbilityInfo)523 void GenerateExtensionAbilityInfo(FuzzedDataProvider& fdp, ExtensionAbilityInfo &extensionAbilityInfo)
524 {
525 extensionAbilityInfo.visible = fdp.ConsumeBool();
526
527 // set when install
528 extensionAbilityInfo.enabled = fdp.ConsumeBool();
529
530 extensionAbilityInfo.needCreateSandbox = fdp.ConsumeBool();
531 extensionAbilityInfo.iconId = fdp.ConsumeIntegral<uint32_t>();
532 extensionAbilityInfo.labelId = fdp.ConsumeIntegral<uint32_t>();
533 extensionAbilityInfo.descriptionId = fdp.ConsumeIntegral<uint32_t>();
534 extensionAbilityInfo.priority = fdp.ConsumeIntegral<int32_t>();
535 // for NAPI, save self query cache
536 extensionAbilityInfo.uid = fdp.ConsumeIntegral<int32_t>();
537 extensionAbilityInfo.appIndex = fdp.ConsumeIntegral<int32_t>();
538 extensionAbilityInfo.type =
539 static_cast<ExtensionAbilityType>(fdp.ConsumeIntegralInRange<uint16_t>(0, ARRAY_MAX_LENGTH));
540 extensionAbilityInfo.compileMode = static_cast<CompileMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MIN_ONE));
541 extensionAbilityInfo.extensionProcessMode =
542 static_cast<ExtensionProcessMode>(fdp.ConsumeIntegralInRange<int8_t>(-1, CODE_MAX_THREE));
543 extensionAbilityInfo.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
544 extensionAbilityInfo.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
545 extensionAbilityInfo.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
546 extensionAbilityInfo.srcEntrance = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
547 extensionAbilityInfo.icon = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
548 extensionAbilityInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
549 extensionAbilityInfo.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
550 extensionAbilityInfo.readPermission = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
551 extensionAbilityInfo.writePermission = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
552 extensionAbilityInfo.uri = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
553 extensionAbilityInfo.extensionTypeName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
554 extensionAbilityInfo.resourcePath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
555 extensionAbilityInfo.hapPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
556 extensionAbilityInfo.process = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
557 extensionAbilityInfo.customProcess = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
558 std::vector<std::string> permissions = GenerateStringArray(fdp);
559 std::vector<std::string> appIdentifierAllowList = GenerateStringArray(fdp);
560 std::vector<std::string> dataGroupIds = GenerateStringArray(fdp);
561 std::vector<std::string> validDataGroupIds = GenerateStringArray(fdp);
562 GenerateApplicationInfo(fdp, extensionAbilityInfo.applicationInfo);
563 }
564
GenerateFormInfo(FuzzedDataProvider & fdp,FormInfo & formInfo)565 void GenerateFormInfo(FuzzedDataProvider& fdp, FormInfo &formInfo)
566 {
567 formInfo.defaultFlag = fdp.ConsumeBool();
568 formInfo.formVisibleNotify = fdp.ConsumeBool();
569 formInfo.updateEnabled = fdp.ConsumeBool();
570 formInfo.isStatic = fdp.ConsumeBool();
571 formInfo.dataProxyEnabled = fdp.ConsumeBool();
572 formInfo.isDynamic = fdp.ConsumeBool();
573 formInfo.transparencyEnabled = fdp.ConsumeBool();
574 formInfo.fontScaleFollowSystem = fdp.ConsumeBool();
575 formInfo.enableBlurBackground = fdp.ConsumeBool();
576 formInfo.appFormVisibleNotify = fdp.ConsumeBool();
577 formInfo.colorMode = static_cast<FormsColorMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MIN_ONE));
578 formInfo.renderingMode = static_cast<FormsRenderingMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_TWO));
579 formInfo.displayNameId = fdp.ConsumeIntegral<uint32_t>();
580 formInfo.descriptionId = fdp.ConsumeIntegral<uint32_t>();
581 formInfo.versionCode = fdp.ConsumeIntegral<uint32_t>();
582 formInfo.updateDuration = fdp.ConsumeIntegral<int32_t>();
583 formInfo.defaultDimension = fdp.ConsumeIntegral<int32_t>();
584 formInfo.privacyLevel = fdp.ConsumeIntegral<int32_t>();
585 formInfo.type = static_cast<FormType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_TWO));
586 formInfo.uiSyntax = static_cast<FormType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_TWO));
587 formInfo.bundleType = static_cast<BundleType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_FOUR));
588 formInfo.package = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
589 formInfo.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
590 formInfo.originalBundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
591 formInfo.relatedBundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
592 formInfo.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
593 // the "module.distro.moduleName" in config.json
594 formInfo.abilityName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
595 formInfo.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
596 formInfo.displayName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
597 formInfo.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
598 formInfo.jsComponentName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
599 formInfo.deepLink = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
600 formInfo.formConfigAbility = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
601 formInfo.scheduledUpdateTime = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
602 formInfo.multiScheduledUpdateTime = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
603 formInfo.src = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
604 }
605
GenerateShortcutInfo(FuzzedDataProvider & fdp,ShortcutInfo & shortcutInfo)606 void GenerateShortcutInfo(FuzzedDataProvider& fdp, ShortcutInfo &shortcutInfo)
607 {
608 shortcutInfo.isStatic = fdp.ConsumeBool();
609 shortcutInfo.isHomeShortcut = fdp.ConsumeBool();
610 shortcutInfo.isEnables = fdp.ConsumeBool();
611 shortcutInfo.visible = fdp.ConsumeBool();
612 shortcutInfo.iconId = fdp.ConsumeIntegral<uint32_t>();
613 shortcutInfo.labelId = fdp.ConsumeIntegral<uint32_t>();
614 shortcutInfo.appIndex = fdp.ConsumeIntegral<int32_t>();
615 shortcutInfo.sourceType = fdp.ConsumeIntegral<int32_t>();
616 shortcutInfo.id = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
617 shortcutInfo.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
618 shortcutInfo.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
619 shortcutInfo.hostAbility = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
620 shortcutInfo.icon = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
621 shortcutInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
622 shortcutInfo.disableMessage = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
623 }
624
GenerateRandomUser(FuzzedDataProvider & fdp)625 int32_t GenerateRandomUser(FuzzedDataProvider& fdp)
626 {
627 uint8_t size = USERS.size();
628 if (size == 0) {
629 return Constants::START_USERID; // No users available, return 100
630 }
631 uint8_t index = fdp.ConsumeIntegralInRange<uint8_t>(0, size) % size; // 0 to size-1
632 return USERS[index];
633 }
634
GenerateHapModuleInfo(FuzzedDataProvider & fdp,HapModuleInfo & hapModuleInfo)635 void GenerateHapModuleInfo(FuzzedDataProvider& fdp, HapModuleInfo &hapModuleInfo)
636 {
637 hapModuleInfo.compressNativeLibs = fdp.ConsumeBool();
638 hapModuleInfo.isLibIsolated = fdp.ConsumeBool();
639 hapModuleInfo.deliveryWithInstall = fdp.ConsumeBool();
640 hapModuleInfo.installationFree = fdp.ConsumeBool();
641 hapModuleInfo.isModuleJson = fdp.ConsumeBool();
642 hapModuleInfo.isStageBasedModel = fdp.ConsumeBool();
643 hapModuleInfo.hasIntent = fdp.ConsumeBool();
644 hapModuleInfo.resizeable = fdp.ConsumeBool();
645 hapModuleInfo.descriptionId = fdp.ConsumeIntegral<uint32_t>();
646 hapModuleInfo.iconId = fdp.ConsumeIntegral<uint32_t>();
647 hapModuleInfo.labelId = fdp.ConsumeIntegral<uint32_t>();
648 hapModuleInfo.upgradeFlag = fdp.ConsumeIntegral<int32_t>();
649 hapModuleInfo.supportedModes = fdp.ConsumeIntegral<int>();
650 hapModuleInfo.colorMode =
651 static_cast<ModuleColorMode>(fdp.ConsumeIntegralInRange<int8_t>(MINUS_ONE, CODE_MAX_ONE));
652 hapModuleInfo.moduleType = static_cast<ModuleType>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_THREE));
653 hapModuleInfo.compileMode = fdp.ConsumeBool() ? CompileMode::ES_MODULE : CompileMode::JS_BUNDLE;
654 hapModuleInfo.aotCompileStatus =
655 static_cast<AOTCompileStatus>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_FOUR));
656 hapModuleInfo.isolationMode = static_cast<IsolationMode>(fdp.ConsumeIntegralInRange<uint8_t>(0, CODE_MAX_THREE));
657 hapModuleInfo.name = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH); // module.name in config.json
658 hapModuleInfo.package = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
659 hapModuleInfo.moduleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
660 hapModuleInfo.description = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
661 hapModuleInfo.iconPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
662 hapModuleInfo.label = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
663 hapModuleInfo.backgroundImg = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
664 hapModuleInfo.mainAbility = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
665 hapModuleInfo.srcPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
666 hapModuleInfo.hashValue = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
667 hapModuleInfo.hapPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
668 hapModuleInfo.nativeLibraryPath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
669 hapModuleInfo.cpuAbi = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
670 // new version fields
671 hapModuleInfo.bundleName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
672 hapModuleInfo.mainElementName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
673 hapModuleInfo.pages = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
674 hapModuleInfo.systemTheme = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
675 hapModuleInfo.process = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
676 hapModuleInfo.resourcePath = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
677 hapModuleInfo.srcEntrance = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
678 hapModuleInfo.uiSyntax = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
679 hapModuleInfo.virtualMachine = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
680 hapModuleInfo.moduleSourceDir = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
681 hapModuleInfo.buildHash = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
682 hapModuleInfo.fileContextMenu = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
683 hapModuleInfo.routerMap = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
684 hapModuleInfo.packageName = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
685 hapModuleInfo.abilitySrcEntryDelegator = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
686 hapModuleInfo.abilityStageSrcEntryDelegator = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
687 hapModuleInfo.appStartup = fdp.ConsumeRandomLengthString(STRING_MAX_LENGTH);
688 hapModuleInfo.nativeLibraryFileNames = GenerateStringArray(fdp);
689 hapModuleInfo.reqCapabilities = GenerateStringArray(fdp);
690 hapModuleInfo.deviceTypes = GenerateStringArray(fdp);
691 GenerateDeviceFeatureMap(fdp, hapModuleInfo.requiredDeviceFeatures);
692 }
693 } // namespace BMSFuzzTestUtil
694 } // namespace AppExecFwk
695 } // namespace OHOS
696 #endif // BMS_FUZZTEST_UTIL_H