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 #include "medialibrarymediaassetscontrollerservice_fuzzer.h"
17
18 #include <cstdint>
19 #include <string>
20 #include <fuzzer/FuzzedDataProvider.h>
21 #define private public
22 #include "media_assets_controller_service.h"
23 #undef private
24 #include "user_define_ipc.h"
25 #include "form_info_vo.h"
26 #include "commit_edited_asset_vo.h"
27 #include "trash_photos_vo.h"
28 #include "delete_photos_vo.h"
29 #include "delete_photos_completed_vo.h"
30 #include "asset_change_vo.h"
31 #include "submit_cache_vo.h"
32 #include "asset_change_vo.h"
33 #include "add_image_vo.h"
34 #include "save_camera_photo_vo.h"
35 #include "get_assets_vo.h"
36 #include "create_asset_vo.h"
37 #include "modify_assets_vo.h"
38 #include "get_asset_analysis_data_vo.h"
39 #include "clone_asset_vo.h"
40 #include "revert_to_original_vo.h"
41 #include "convert_format_vo.h"
42 #include "cloud_enhancement_vo.h"
43 #include "start_download_cloud_media_vo.h"
44 #include "retain_cloud_media_asset_vo.h"
45 #include "get_cloudmedia_asset_status_vo.h"
46 #include "get_edit_data_vo.h"
47 #include "request_edit_data_vo.h"
48 #include "is_edited_vo.h"
49 #include "start_asset_analysis_vo.h"
50 #include "grant_photo_uri_permission_vo.h"
51 #include "grant_photo_uris_permission_vo.h"
52 #include "cancel_photo_uri_permission_vo.h"
53 #include "stop_thumbnail_creation_task_vo.h"
54 #include "start_thumbnail_creation_task_vo.h"
55 #include "request_content_vo.h"
56 #include "get_cloud_enhancement_pair_vo.h"
57 #include "query_cloud_enhancement_task_state_vo.h"
58 #include "query_photo_vo.h"
59 #include "add_visit_count_vo.h"
60 #include "adapted_vo.h"
61 #include "grant_photo_uri_permission_inner_vo.h"
62 #include "cancel_photo_uri_permission_inner_vo.h"
63 #include "get_result_set_from_db_vo.h"
64 #include "get_result_set_from_photos_extend_vo.h"
65 #include "get_moving_photo_date_modified_vo.h"
66 #include "get_uri_from_filepath_vo.h"
67 #include "get_filepath_from_uri_vo.h"
68 #include "close_asset_vo.h"
69 #include "check_photo_uri_permission_inner_vo.h"
70 #include "get_uris_by_old_uris_inner_vo.h"
71 #include "restore_vo.h"
72 #include "stop_restore_vo.h"
73
74 #include "media_old_photos_column.h"
75 #include "media_column.h"
76 #include "message_parcel.h"
77 #include "rdb_utils.h"
78
79 namespace OHOS {
80 using namespace std;
81 using namespace OHOS::Media;
82
83 static const int32_t FORM_INFO_NUM_BYTES = 10;
84 static const int32_t NUM_BYTES = 8;
85 static const string EDIT_DATA_VALUE = "{\"imageEffect\":{\"filters\":[{\"name\":\"InplaceSticker\",\"values\":"
86 "{\"RESOURCE_DIRECTORY\":\"/sys_prod/resource/camera\",\"cameraPosition\":1}}],\"name\":\"imageEdit\"}}";
87
88 FuzzedDataProvider* FDP;
89 shared_ptr<MediaAssetsControllerService> mediaAssetsControllerService = nullptr;
90
FuzzVector()91 static inline std::vector<std::string> FuzzVector()
92 {
93 return {FDP->ConsumeBytesAsString(FORM_INFO_NUM_BYTES)};
94 }
95
FormInfoFuzzer()96 static void FormInfoFuzzer()
97 {
98 FormInfoReqBody reqBody;
99 reqBody.formIds = FuzzVector();
100 string uri = "file://media/Photo/" + to_string(FDP->ConsumeIntegral<int32_t>());
101 vector<string> fileUris = { uri };
102 reqBody.fileUris = fileUris;
103 MessageParcel data;
104 MessageParcel reply;
105 reqBody.Marshalling(data);
106 mediaAssetsControllerService->SaveFormInfo(data, reply);
107 mediaAssetsControllerService->SaveGalleryFormInfo(data, reply);
108 mediaAssetsControllerService->RemoveFormInfo(data, reply);
109 mediaAssetsControllerService->RemoveGalleryFormInfo(data, reply);
110 mediaAssetsControllerService->UpdateGalleryFormInfo(data, reply);
111 }
112
CommitEditedAssetFuzzer()113 static void CommitEditedAssetFuzzer()
114 {
115 CommitEditedAssetReqBody reqBody;
116 reqBody.editData = EDIT_DATA_VALUE;
117 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
118 MessageParcel data;
119 MessageParcel reply;
120 reqBody.Marshalling(data);
121 mediaAssetsControllerService->CommitEditedAsset(data, reply);
122 }
123
SysTrashPhotosFuzzer()124 static void SysTrashPhotosFuzzer()
125 {
126 TrashPhotosReqBody reqBody;
127 auto uri = "file://media/Photo/" + to_string(FDP->ConsumeIntegral<int32_t>());
128 std::vector<std::string> testUris = {uri};
129 reqBody.uris = testUris;
130 MessageParcel data;
131 MessageParcel reply;
132 reqBody.Marshalling(data);
133 mediaAssetsControllerService->SysTrashPhotos(data, reply);
134 mediaAssetsControllerService->TrashPhotos(data, reply);
135 }
136
DeletePhotosFuzzer()137 static void DeletePhotosFuzzer()
138 {
139 DeletePhotosReqBody reqBody;
140 std::vector<std::string> testUris = {"file://media/Photo/1/IMG_1748423699_000/IMG_20250528_171318.jpg", ""};
141 reqBody.uris = testUris;
142 MessageParcel data;
143 MessageParcel reply;
144 reqBody.Marshalling(data);
145 mediaAssetsControllerService->DeletePhotos(data, reply);
146 }
147
DeletePhotosCompletedFuzzer()148 static void DeletePhotosCompletedFuzzer()
149 {
150 DeletePhotosCompletedReqBody reqBody;
151 reqBody.fileIds = {to_string(FDP->ConsumeIntegral<int32_t>())};
152 MessageParcel data;
153 MessageParcel reply;
154 reqBody.Marshalling(data);
155 mediaAssetsControllerService->DeletePhotosCompleted(data, reply);
156 }
157
AssetChangeSetFavoriteFuzzer()158 static void AssetChangeSetFavoriteFuzzer()
159 {
160 AssetChangeReqBody reqBody;
161 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
162 reqBody.favorite = FDP->ConsumeBool();
163 MessageParcel data;
164 MessageParcel reply;
165 reqBody.Marshalling(data);
166 mediaAssetsControllerService->AssetChangeSetFavorite(data, reply);
167 }
168
AssetChangeSetHiddenFuzzer()169 static void AssetChangeSetHiddenFuzzer()
170 {
171 AssetChangeReqBody reqBody;
172 reqBody.uri = "file://media/Photo/1/IMG_1748423699_000/IMG_20250528_171318.jpg";
173 reqBody.hidden = FDP->ConsumeBool();
174 MessageParcel data;
175 MessageParcel reply;
176 reqBody.Marshalling(data);
177 mediaAssetsControllerService->AssetChangeSetHidden(data, reply);
178 }
179
AssetChangeSetUserCommentFuzzer()180 static void AssetChangeSetUserCommentFuzzer()
181 {
182 AssetChangeReqBody reqBody;
183 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
184 reqBody.userComment = "user comment";
185 MessageParcel data;
186 MessageParcel reply;
187 reqBody.Marshalling(data);
188 mediaAssetsControllerService->AssetChangeSetUserComment(data, reply);
189 }
190
AssetChangeSetLocationFuzzer()191 static void AssetChangeSetLocationFuzzer()
192 {
193 AssetChangeReqBody reqBody;
194 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
195 reqBody.path = "/data/local/tmp/IMG_1501924305_001.jpg";
196 reqBody.latitude = FDP->ConsumeFloatingPoint<double>();
197 reqBody.longitude = FDP->ConsumeFloatingPoint<double>();
198 MessageParcel data;
199 MessageParcel reply;
200 reqBody.Marshalling(data);
201 mediaAssetsControllerService->AssetChangeSetLocation(data, reply);
202 }
203
AssetChangeSetTitleFuzzer()204 static void AssetChangeSetTitleFuzzer()
205 {
206 AssetChangeReqBody reqBody;
207 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
208 reqBody.title = "title_test";
209 MessageParcel data;
210 MessageParcel reply;
211 reqBody.Marshalling(data);
212 mediaAssetsControllerService->AssetChangeSetTitle(data, reply);
213 }
214
AssetChangeSetEditDataFuzzer()215 static void AssetChangeSetEditDataFuzzer()
216 {
217 AssetChangeReqBody reqBody;
218 DataShare::DataShareValuesBucket valuesBucket;
219 int fileId = FDP->ConsumeIntegral<int32_t>();
220 valuesBucket.Put("file_id", fileId);
221 std::string editData = "edit_data";
222 valuesBucket.Put("edit_data", editData);
223 reqBody.values = RdbDataShareAdapter::RdbUtils::ToValuesBucket(valuesBucket);
224
225 MessageParcel data;
226 MessageParcel reply;
227 reqBody.Marshalling(data);
228 mediaAssetsControllerService->AssetChangeSetEditData(data, reply);
229 }
230
AssetChangeSubmitCacheFuzzer()231 static void AssetChangeSubmitCacheFuzzer()
232 {
233 SubmitCacheReqBody reqBody;
234 DataShare::DataShareValuesBucket valuesBucket;
235 int fileId = FDP->ConsumeIntegral<int32_t>();
236 valuesBucket.Put("file_id", fileId);
237 std::string editData = "edit_data";
238 valuesBucket.Put("edit_data", editData);
239 reqBody.values = RdbDataShareAdapter::RdbUtils::ToValuesBucket(valuesBucket);
240 reqBody.isWriteGpsAdvanced = FDP->ConsumeBool();
241
242 MessageParcel data;
243 MessageParcel reply;
244 reqBody.Marshalling(data);
245 mediaAssetsControllerService->AssetChangeSubmitCache(data, reply);
246 }
247
AssetChangeCreateAssetFuzzer()248 static void AssetChangeCreateAssetFuzzer()
249 {
250 AssetChangeReqBody reqBody;
251 reqBody.values.Put("extention", "jpg");
252 reqBody.values.Put("media_type", MEDIA_TYPE_IMAGE);
253 reqBody.values.Put("title", "20250602162718617");
254 MessageParcel data;
255 MessageParcel reply;
256 reqBody.Marshalling(data);
257 mediaAssetsControllerService->AssetChangeCreateAsset(data, reply);
258 }
259
AssetChangeAddImageFuzzer()260 static void AssetChangeAddImageFuzzer()
261 {
262 AddImageReqBody reqBody;
263 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
264 reqBody.photoId = "20250527162718617";
265 reqBody.deferredProcType = FDP->ConsumeIntegral<int32_t>();
266 MessageParcel data;
267 MessageParcel reply;
268 reqBody.Marshalling(data);
269 mediaAssetsControllerService->AssetChangeAddImage(data, reply);
270 }
271
SetCameraShotKeyFuzzer()272 static void SetCameraShotKeyFuzzer()
273 {
274 AssetChangeReqBody reqBody;
275 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
276 reqBody.cameraShotKey = "shot_key_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx_test";
277 MessageParcel data;
278 MessageParcel reply;
279 reqBody.Marshalling(data);
280 mediaAssetsControllerService->SetCameraShotKey(data, reply);
281 }
282
SaveCameraPhotoFuzzer()283 static void SaveCameraPhotoFuzzer()
284 {
285 SaveCameraPhotoReqBody reqBody;
286 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
287 reqBody.needScan = FDP->ConsumeBool();
288 reqBody.path = "file//media/Photo/";
289 reqBody.photoSubType = 1;
290 reqBody.imageFileType = 1;
291 reqBody.supportedWatermarkType = FDP->ConsumeIntegral<int32_t>();
292 reqBody.cameraShotKey = "Set";
293 MessageParcel data;
294 MessageParcel reply;
295 reqBody.Marshalling(data);
296 mediaAssetsControllerService->SaveCameraPhoto(data, reply);
297 }
298
DiscardCameraPhotoFuzzer()299 static void DiscardCameraPhotoFuzzer()
300 {
301 AssetChangeReqBody reqBody;
302 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
303 MessageParcel data;
304 MessageParcel reply;
305 reqBody.Marshalling(data);
306 mediaAssetsControllerService->DiscardCameraPhoto(data, reply);
307 }
308
SetEffectModeFuzzer()309 static void SetEffectModeFuzzer()
310 {
311 AssetChangeReqBody reqBody;
312 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
313 reqBody.effectMode = FDP->ConsumeIntegral<int32_t>();
314 MessageParcel data;
315 MessageParcel reply;
316 reqBody.Marshalling(data);
317 mediaAssetsControllerService->SetEffectMode(data, reply);
318 }
319
SetOrientationFuzzer()320 static void SetOrientationFuzzer()
321 {
322 AssetChangeReqBody reqBody;
323 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
324 reqBody.orientation = FDP->ConsumeIntegral<int32_t>();
325 MessageParcel data;
326 MessageParcel reply;
327 reqBody.Marshalling(data);
328 mediaAssetsControllerService->SetOrientation(data, reply);
329 }
330
SetVideoEnhancementAttrFuzzer()331 static void SetVideoEnhancementAttrFuzzer()
332 {
333 AssetChangeReqBody reqBody;
334 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
335 reqBody.photoId = "202410011800";
336 reqBody.path = "file//media/Photo/";
337 MessageParcel data;
338 MessageParcel reply;
339 reqBody.Marshalling(data);
340 mediaAssetsControllerService->SetVideoEnhancementAttr(data, reply);
341 }
342
SetSupportedWatermarkTypeFuzzer()343 static void SetSupportedWatermarkTypeFuzzer()
344 {
345 AssetChangeReqBody reqBody;
346 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
347 reqBody.watermarkType = FDP->ConsumeIntegral<int32_t>();
348 MessageParcel data;
349 MessageParcel reply;
350 reqBody.Marshalling(data);
351 mediaAssetsControllerService->SetSupportedWatermarkType(data, reply);
352 }
353
DuplicateAssetsFuzzer()354 static void DuplicateAssetsFuzzer()
355 {
356 GetAssetsReqBody reqBody;
357 MessageParcel data;
358 MessageParcel reply;
359 reqBody.Marshalling(data);
360 mediaAssetsControllerService->GetAllDuplicateAssets(data, reply);
361 mediaAssetsControllerService->GetDuplicateAssetsToDelete(data, reply);
362 }
363
CreateAssetFuzzer()364 static void CreateAssetFuzzer()
365 {
366 CreateAssetReqBody reqBody;
367 reqBody.mediaType = MEDIA_TYPE_IMAGE;
368 reqBody.title = FDP->ConsumeBytesAsString(NUM_BYTES);
369 reqBody.extension = FDP->ConsumeBytesAsString(NUM_BYTES);
370 MessageParcel data;
371 MessageParcel reply;
372 reqBody.Marshalling(data);
373 mediaAssetsControllerService->PublicCreateAsset(data, reply);
374 CreateAssetReqBody sysReqBody;
375 sysReqBody.mediaType = MEDIA_TYPE_IMAGE;
376 sysReqBody.photoSubtype = FDP->ConsumeIntegral<int32_t>();
377 sysReqBody.displayName = FDP->ConsumeBytesAsString(NUM_BYTES);
378 sysReqBody.cameraShotKey = FDP->ConsumeBytesAsString(NUM_BYTES);
379 MessageParcel sysData;
380 MessageParcel sysReply;
381 sysReqBody.Marshalling(sysData);
382 mediaAssetsControllerService->SystemCreateAsset(sysData, sysReply);
383 }
384
CreateAssetForAppFuzzer()385 static void CreateAssetForAppFuzzer()
386 {
387 CreateAssetForAppReqBody reqBody;
388 reqBody.tokenId = FDP->ConsumeIntegral<int32_t>();
389 reqBody.mediaType = MEDIA_TYPE_IMAGE;
390 reqBody.photoSubtype = static_cast<int32_t>(PhotoSubType::DEFAULT);
391 reqBody.title = FDP->ConsumeBytesAsString(NUM_BYTES);
392 reqBody.extension = FDP->ConsumeBytesAsString(NUM_BYTES);
393 reqBody.appId = FDP->ConsumeBytesAsString(NUM_BYTES);
394 reqBody.packageName = FDP->ConsumeBytesAsString(NUM_BYTES);
395 reqBody.bundleName = FDP->ConsumeBytesAsString(NUM_BYTES);
396 MessageParcel data;
397 MessageParcel reply;
398 reqBody.Marshalling(data);
399 mediaAssetsControllerService->PublicCreateAssetForApp(data, reply);
400 mediaAssetsControllerService->SystemCreateAssetForApp(data, reply);
401 reqBody.ownerAlbumId = to_string(FDP->ConsumeIntegral<int32_t>());
402 MessageParcel album_data;
403 MessageParcel album_reply;
404 reqBody.Marshalling(album_data);
405 mediaAssetsControllerService->CreateAssetForAppWithAlbum(album_data, album_reply);
406 }
407
SetAssetTitleFuzzer()408 static void SetAssetTitleFuzzer()
409 {
410 ModifyAssetsReqBody reqBody;
411 reqBody.fileIds.push_back(FDP->ConsumeIntegral<int32_t>());
412 reqBody.title = FDP->ConsumeBytesAsString(NUM_BYTES);
413 MessageParcel data;
414 MessageParcel reply;
415 reqBody.Marshalling(data);
416 mediaAssetsControllerService->SetAssetTitle(data, reply);
417 }
418
SetAssetPendingFuzzer()419 static void SetAssetPendingFuzzer()
420 {
421 ModifyAssetsReqBody reqBody;
422 reqBody.fileIds.push_back(FDP->ConsumeIntegral<int32_t>());
423 reqBody.pending = FDP->ConsumeIntegral<int32_t>();
424 MessageParcel data;
425 MessageParcel reply;
426 reqBody.Marshalling(data);
427 mediaAssetsControllerService->SetAssetPending(data, reply);
428 }
429
SetAssetsFavoriteFuzzer()430 static void SetAssetsFavoriteFuzzer()
431 {
432 ModifyAssetsReqBody reqBody;
433 reqBody.fileIds.push_back(FDP->ConsumeIntegral<int32_t>());
434 reqBody.favorite = FDP->ConsumeIntegral<int32_t>();
435 MessageParcel data;
436 MessageParcel reply;
437 reqBody.Marshalling(data);
438 mediaAssetsControllerService->SetAssetsFavorite(data, reply);
439 }
440
SetAssetsHiddenStatusFuzzer()441 static void SetAssetsHiddenStatusFuzzer()
442 {
443 ModifyAssetsReqBody reqBody;
444 reqBody.fileIds.push_back(FDP->ConsumeIntegral<int32_t>());
445 reqBody.hiddenStatus = FDP->ConsumeIntegral<int32_t>();
446 MessageParcel data;
447 MessageParcel reply;
448 reqBody.Marshalling(data);
449 mediaAssetsControllerService->SetAssetsHiddenStatus(data, reply);
450 }
451
SetAssetsRecentShowStatusFuzzer()452 static void SetAssetsRecentShowStatusFuzzer()
453 {
454 ModifyAssetsReqBody reqBody;
455 reqBody.fileIds.push_back(FDP->ConsumeIntegral<int32_t>());
456 reqBody.recentShowStatus = FDP->ConsumeIntegral<int32_t>();
457 MessageParcel data;
458 MessageParcel reply;
459 reqBody.Marshalling(data);
460 mediaAssetsControllerService->SetAssetsRecentShowStatus(data, reply);
461 }
462
SetAssetsUserCommentFuzzer()463 static void SetAssetsUserCommentFuzzer()
464 {
465 ModifyAssetsReqBody reqBody;
466 reqBody.fileIds.push_back(FDP->ConsumeIntegral<int32_t>());
467 reqBody.userComment = FDP->ConsumeBytesAsString(NUM_BYTES);
468 MessageParcel data;
469 MessageParcel reply;
470 reqBody.Marshalling(data);
471 mediaAssetsControllerService->SetAssetsUserComment(data, reply);
472 }
473
GetAssetAnalysisDataFuzzer()474 static void GetAssetAnalysisDataFuzzer()
475 {
476 GetAssetAnalysisDataReqBody reqBody;
477 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
478 reqBody.language = "zh-Hans";
479 reqBody.analysisType = FDP->ConsumeIntegral<int32_t>();
480 reqBody.analysisTotal = FDP->ConsumeBool();
481 MessageParcel data;
482 MessageParcel reply;
483 reqBody.Marshalling(data);
484 mediaAssetsControllerService->GetAssetAnalysisData(data, reply);
485 }
486
CloneAssetFuzzer()487 static void CloneAssetFuzzer()
488 {
489 CloneAssetReqBody reqBody;
490 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
491 reqBody.displayName = FDP->ConsumeBytesAsString(NUM_BYTES);
492 reqBody.title = FDP->ConsumeBytesAsString(NUM_BYTES);
493 MessageParcel data;
494 MessageParcel reply;
495 reqBody.Marshalling(data);
496 mediaAssetsControllerService->CloneAsset(data, reply);
497 }
498
RevertToOriginalFuzzer()499 static void RevertToOriginalFuzzer()
500 {
501 RevertToOriginalReqBody reqBody;
502 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
503 reqBody.fileUri = "file://media/Photo/" + to_string(reqBody.fileId);
504 MessageParcel data;
505 MessageParcel reply;
506 reqBody.Marshalling(data);
507 mediaAssetsControllerService->RevertToOriginal(data, reply);
508 }
509
ConvertFormatFuzzer()510 static void ConvertFormatFuzzer()
511 {
512 ConvertFormatReqBody reqBody;
513 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
514 reqBody.title = FDP->ConsumeBytesAsString(NUM_BYTES);
515 reqBody.extension =FDP->ConsumeBytesAsString(NUM_BYTES);
516 MessageParcel data;
517 MessageParcel reply;
518 reqBody.Marshalling(data);
519 mediaAssetsControllerService->ConvertFormat(data, reply);
520 }
521
SubmitCloudEnhancementTasksFuzzer()522 static void SubmitCloudEnhancementTasksFuzzer()
523 {
524 CloudEnhancementReqBody reqBody;
525 reqBody.hasCloudWatermark = FDP->ConsumeBool();
526 reqBody.triggerMode = 1;
527 reqBody.fileUris = { "file://media/Photo/" + to_string(FDP->ConsumeIntegral<int32_t>()) };
528 MessageParcel data;
529 MessageParcel reply;
530 reqBody.Marshalling(data);
531 mediaAssetsControllerService->SubmitCloudEnhancementTasks(data, reply);
532 mediaAssetsControllerService->PrioritizeCloudEnhancementTask(data, reply);
533 mediaAssetsControllerService->CancelCloudEnhancementTasks(data, reply);
534 mediaAssetsControllerService->CancelAllCloudEnhancementTasks(data, reply);
535 mediaAssetsControllerService->SyncCloudEnhancementTaskStatus(data, reply);
536 }
537
StartDownloadCloudMediaFuzzer()538 static void StartDownloadCloudMediaFuzzer()
539 {
540 StartDownloadCloudMediaReqBody reqBody;
541 reqBody.cloudMediaType = FDP->ConsumeBool() ? 1 : 0;
542 MessageParcel data;
543 MessageParcel reply;
544 reqBody.Marshalling(data);
545 mediaAssetsControllerService->StartDownloadCloudMedia(data, reply);
546 }
547
RetainCloudMediaAssetFuzzer()548 static void RetainCloudMediaAssetFuzzer()
549 {
550 RetainCloudMediaAssetReqBody reqBody;
551 reqBody.cloudMediaRetainType = FDP->ConsumeBool() ? 1 : 0;
552 MessageParcel data;
553 MessageParcel reply;
554 reqBody.Marshalling(data);
555 mediaAssetsControllerService->RetainCloudMediaAsset(data, reply);
556 }
557
GetCloudMediaAssetStatusFuzzer()558 static void GetCloudMediaAssetStatusFuzzer()
559 {
560 GetCloudMediaAssetStatusReqBody reqBody;
561 MessageParcel data;
562 MessageParcel reply;
563 reqBody.Marshalling(data);
564 mediaAssetsControllerService->GetCloudMediaAssetStatus(data, reply);
565 }
566
GetEditDataFuzzer()567 static void GetEditDataFuzzer()
568 {
569 GetEditDataReqBody reqBody;
570 reqBody.predicates.EqualTo("file_id", "1111111");
571 MessageParcel data;
572 MessageParcel reply;
573 reqBody.Marshalling(data);
574 mediaAssetsControllerService->GetEditData(data, reply);
575 }
576
RequestEditDataFuzzer()577 static void RequestEditDataFuzzer()
578 {
579 RequestEditDataReqBody reqBody;
580 reqBody.predicates.EqualTo("file_id", "1111111");
581 MessageParcel data;
582 MessageParcel reply;
583 reqBody.Marshalling(data);
584 mediaAssetsControllerService->RequestEditData(data, reply);
585 }
586
IsEditedFuzzer()587 static void IsEditedFuzzer()
588 {
589 IsEditedReqBody reqBody;
590 reqBody.fileId = 1;
591 MessageParcel data;
592 MessageParcel reply;
593 reqBody.Marshalling(data);
594 mediaAssetsControllerService->IsEdited(data, reply);
595 }
596
StartAssetAnalysisFuzzer()597 static void StartAssetAnalysisFuzzer()
598 {
599 StartAssetAnalysisReqBody reqBody;
600 std::vector<std::string> fileIds{"111111", "222222", to_string(FDP->ConsumeIntegral<int32_t>())};
601 reqBody.predicates.In("Photos.file_id", fileIds);
602 MessageParcel data;
603 MessageParcel reply;
604 reqBody.Marshalling(data);
605 mediaAssetsControllerService->StartAssetAnalysis(data, reply);
606 }
607
GrantPhotoUriPermissionFuzzer()608 static void GrantPhotoUriPermissionFuzzer()
609 {
610 GrantUriPermissionReqBody reqBody;
611 reqBody.tokenId = FDP->ConsumeIntegral<int64_t>();
612 reqBody.srcTokenId = FDP->ConsumeIntegral<int64_t>();
613 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
614 reqBody.permissionType = FDP->ConsumeIntegral<int32_t>();
615 reqBody.hideSensitiveType = FDP->ConsumeIntegral<int32_t>();
616 reqBody.uriType = FDP->ConsumeIntegral<int32_t>();
617 MessageParcel data;
618 MessageParcel reply;
619 reqBody.Marshalling(data);
620 mediaAssetsControllerService->GrantPhotoUriPermission(data, reply);
621 }
622
GrantPhotoUrisPermissionFuzzer()623 static void GrantPhotoUrisPermissionFuzzer()
624 {
625 GrantUrisPermissionReqBody reqBody;
626 reqBody.tokenId = FDP->ConsumeIntegral<int64_t>();
627 reqBody.srcTokenId = FDP->ConsumeIntegral<int64_t>();
628 reqBody.fileIds = {FDP->ConsumeIntegral<int32_t>()};
629 reqBody.permissionType = FDP->ConsumeIntegral<int32_t>();
630 reqBody.hideSensitiveType = FDP->ConsumeIntegral<int32_t>();
631 reqBody.uriType = FDP->ConsumeIntegral<int32_t>();
632 MessageParcel data;
633 MessageParcel reply;
634 reqBody.Marshalling(data);
635 mediaAssetsControllerService->GrantPhotoUrisPermission(data, reply);
636 }
637
CancelPhotoUriPermissionFuzzer()638 static void CancelPhotoUriPermissionFuzzer()
639 {
640 CancelUriPermissionReqBody reqBody;
641 reqBody.tokenId = FDP->ConsumeIntegral<int64_t>();
642 reqBody.srcTokenId = FDP->ConsumeIntegral<int64_t>();
643 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
644 reqBody.permissionType = FDP->ConsumeIntegral<int32_t>();
645 reqBody.uriType = FDP->ConsumeIntegral<int32_t>();
646 MessageParcel data;
647 MessageParcel reply;
648 reqBody.Marshalling(data);
649 mediaAssetsControllerService->CancelPhotoUriPermission(data, reply);
650 }
651
StartThumbnailCreationTaskFuzzer()652 static void StartThumbnailCreationTaskFuzzer()
653 {
654 StartThumbnailCreationTaskReqBody reqBody;
655 reqBody.requestId = FDP->ConsumeIntegral<int32_t>();
656 MessageParcel data;
657 MessageParcel reply;
658 reqBody.Marshalling(data);
659 mediaAssetsControllerService->StartThumbnailCreationTask(data, reply);
660 }
661
StopThumbnailCreationTaskFuzzer()662 static void StopThumbnailCreationTaskFuzzer()
663 {
664 StopThumbnailCreationTaskReqBody reqBody;
665 reqBody.requestId = FDP->ConsumeIntegral<int32_t>();
666 MessageParcel data;
667 MessageParcel reply;
668 reqBody.Marshalling(data);
669 mediaAssetsControllerService->StopThumbnailCreationTask(data, reply);
670 }
671
RequestContentFuzzer()672 static void RequestContentFuzzer()
673 {
674 RequestContentReqBody reqBody;
675 reqBody.mediaId = to_string(FDP->ConsumeIntegral<int32_t>());
676 MessageParcel data;
677 MessageParcel reply;
678 reqBody.Marshalling(data);
679 mediaAssetsControllerService->RequestContent(data, reply);
680 }
681
GetCloudEnhancementPairFuzzer()682 static void GetCloudEnhancementPairFuzzer()
683 {
684 GetCloudEnhancementPairReqBody reqBody;
685 reqBody.photoUri = FDP->ConsumeBytesAsString(NUM_BYTES);
686
687 MessageParcel data;
688 MessageParcel reply;
689 reqBody.Marshalling(data);
690 mediaAssetsControllerService->GetCloudEnhancementPair(data, reply);
691 }
692
QueryCloudEnhancementTaskStateFuzzer()693 static void QueryCloudEnhancementTaskStateFuzzer()
694 {
695 QueryCloudEnhancementTaskStateReqBody reqBody;
696 reqBody.photoUri = FDP->ConsumeBytesAsString(NUM_BYTES);
697
698 MessageParcel data;
699 MessageParcel reply;
700 reqBody.Marshalling(data);
701 mediaAssetsControllerService->QueryCloudEnhancementTaskState(data, reply);
702 }
703
QueryPhotoStatusFuzzer()704 static void QueryPhotoStatusFuzzer()
705 {
706 QueryPhotoReqBody reqBody;
707 reqBody.fileId = std::to_string(FDP->ConsumeIntegral<int32_t>());
708
709 MessageParcel data;
710 MessageParcel reply;
711 reqBody.Marshalling(data);
712 mediaAssetsControllerService->QueryPhotoStatus(data, reply);
713 }
714
LogMovingPhotoFuzzer()715 static void LogMovingPhotoFuzzer()
716 {
717 AdaptedReqBody reqBody;
718 reqBody.adapted = FDP->ConsumeBool();
719
720 MessageParcel data;
721 MessageParcel reply;
722 reqBody.Marshalling(data);
723 mediaAssetsControllerService->LogMovingPhoto(data, reply);
724 }
725
AddAssetVisitCountFuzzer()726 static void AddAssetVisitCountFuzzer()
727 {
728 AddAssetVisitCountReqBody reqBody;
729 reqBody.fileId = FDP->ConsumeIntegral<int32_t>();
730 reqBody.visitType = FDP->ConsumeIntegral<int32_t>();
731 MessageParcel data;
732 MessageParcel reply;
733 reqBody.Marshalling(data);
734 mediaAssetsControllerService->AddAssetVisitCount(data, reply);
735 }
736
GrantPhotoUriPermissionInnerFuzzer()737 static void GrantPhotoUriPermissionInnerFuzzer()
738 {
739 GrantUrisPermissionInnerReqBody reqBody;
740 reqBody.tokenId = FDP->ConsumeIntegral<int64_t>();
741 reqBody.srcTokenId = FDP->ConsumeIntegral<int64_t>();
742 reqBody.fileIds = {FDP->ConsumeBytesAsString(NUM_BYTES)};
743 reqBody.permissionTypes = {FDP->ConsumeIntegral<int32_t>()};
744 reqBody.hideSensitiveType = FDP->ConsumeIntegral<int32_t>();
745 reqBody.uriTypes = {FDP->ConsumeIntegral<int32_t>()};
746 MessageParcel data;
747 MessageParcel reply;
748 reqBody.Marshalling(data);
749 mediaAssetsControllerService->GrantPhotoUriPermissionInner(data, reply);
750 }
751
CancelPhotoUriPermissionInnerFuzzer()752 static void CancelPhotoUriPermissionInnerFuzzer()
753 {
754 CancelUriPermissionInnerReqBody reqBody;
755 reqBody.targetTokenId = FDP->ConsumeIntegral<int64_t>();
756 reqBody.srcTokenId = FDP->ConsumeIntegral<int64_t>();
757 reqBody.fileIds = {FDP->ConsumeBytesAsString(NUM_BYTES)};
758 reqBody.uriTypes = {FDP->ConsumeIntegral<int32_t>()};
759 reqBody.permissionTypes = {{FDP->ConsumeBytesAsString(NUM_BYTES)}};
760 MessageParcel data;
761 MessageParcel reply;
762 reqBody.Marshalling(data);
763 mediaAssetsControllerService->CancelPhotoUriPermissionInner(data, reply);
764 }
765
GetResultSetFromDbFuzzer()766 static void GetResultSetFromDbFuzzer()
767 {
768 GetResultSetFromDbReqBody reqBody;
769 reqBody.columnName = FDP->ConsumeBytesAsString(NUM_BYTES);
770 reqBody.value = FDP->ConsumeBytesAsString(NUM_BYTES);
771 reqBody.columns = {FDP->ConsumeBytesAsString(NUM_BYTES)};
772 MessageParcel data;
773 MessageParcel reply;
774 reqBody.Marshalling(data);
775 mediaAssetsControllerService->GetResultSetFromDb(data, reply);
776 }
777
GetResultSetFromPhotosExtendFuzzer()778 static void GetResultSetFromPhotosExtendFuzzer()
779 {
780 GetResultSetFromPhotosExtendReqBody reqBody;
781 reqBody.value = FDP->ConsumeBytesAsString(NUM_BYTES);
782 reqBody.columns = {FDP->ConsumeBytesAsString(NUM_BYTES)};
783 MessageParcel data;
784 MessageParcel reply;
785 reqBody.Marshalling(data);
786 mediaAssetsControllerService->GetResultSetFromPhotosExtend(data, reply);
787 }
788
GetMovingPhotoDateModifiedFuzzer()789 static void GetMovingPhotoDateModifiedFuzzer()
790 {
791 GetMovingPhotoDateModifiedReqBody reqBody;
792 reqBody.fileId = to_string(FDP->ConsumeIntegral<int32_t>());
793
794 MessageParcel data;
795 MessageParcel reply;
796 reqBody.Marshalling(data);
797 mediaAssetsControllerService->GetMovingPhotoDateModified(data, reply);
798 }
799
GetFilePathFromUriFuzzer()800 static void GetFilePathFromUriFuzzer()
801 {
802 GetFilePathFromUriReqBody reqBody;
803 reqBody.virtualId = to_string(FDP->ConsumeIntegral<int32_t>());
804
805 MessageParcel data;
806 MessageParcel reply;
807 reqBody.Marshalling(data);
808 mediaAssetsControllerService->GetFilePathFromUri(data, reply);
809 }
810
GetUriFromFilePathFuzzer()811 static void GetUriFromFilePathFuzzer()
812 {
813 GetUriFromFilePathReqBody reqBody;
814 reqBody.tempPath = to_string(FDP->ConsumeIntegral<int32_t>());
815
816 MessageParcel data;
817 MessageParcel reply;
818 reqBody.Marshalling(data);
819 mediaAssetsControllerService->GetUriFromFilePath(data, reply);
820 }
821
CloseAssetFuzzer()822 static void CloseAssetFuzzer()
823 {
824 CloseAssetReqBody reqBody;
825 reqBody.uri = FDP->ConsumeBytesAsString(NUM_BYTES);
826
827 MessageParcel data;
828 MessageParcel reply;
829 reqBody.Marshalling(data);
830 mediaAssetsControllerService->CloseAsset(data, reply);
831 }
832
CheckUriPermissionInnerFuzzer()833 static void CheckUriPermissionInnerFuzzer()
834 {
835 CheckUriPermissionInnerReqBody reqBody;
836 reqBody.targetTokenId = FDP->ConsumeIntegral<int64_t>();
837 reqBody.uriType = FDP->ConsumeBytesAsString(NUM_BYTES);
838 reqBody.fileIds = {FDP->ConsumeBytesAsString(NUM_BYTES)};
839 reqBody.columns = {FDP->ConsumeBytesAsString(NUM_BYTES)};
840 MessageParcel data;
841 MessageParcel reply;
842 reqBody.Marshalling(data);
843 mediaAssetsControllerService->CheckUriPermissionInner(data, reply);
844 }
845
GetUrisByOldUrisInnerFuzzer()846 static void GetUrisByOldUrisInnerFuzzer()
847 {
848 GetUrisByOldUrisInnerReqBody reqBody;
849 reqBody.uris = {FDP->ConsumeBytesAsString(NUM_BYTES)};
850 reqBody.columns.push_back(TabOldPhotosColumn::OLD_PHOTOS_TABLE + "." + "file_id");
851 reqBody.columns.push_back(TabOldPhotosColumn::OLD_PHOTOS_TABLE + "." + "data");
852 reqBody.columns.push_back(TabOldPhotosColumn::OLD_PHOTOS_TABLE + "." + "old_file_id");
853 reqBody.columns.push_back(TabOldPhotosColumn::OLD_PHOTOS_TABLE + "." + "old_data");
854 reqBody.columns.push_back(PhotoColumn::PHOTOS_TABLE + "." + "display_name");
855
856 MessageParcel data;
857 MessageParcel reply;
858 reqBody.Marshalling(data);
859 mediaAssetsControllerService->GetUrisByOldUrisInner(data, reply);
860 }
861
RestoreFuzzer()862 static void RestoreFuzzer()
863 {
864 RestoreReqBody reqBody;
865 reqBody.albumLpath = "/" + FDP->ConsumeBytesAsString(NUM_BYTES);
866 reqBody.keyPath = FDP->ConsumeBytesAsString(NUM_BYTES);
867 reqBody.bundleName = FDP->ConsumeBytesAsString(NUM_BYTES);
868 reqBody.appName = FDP->ConsumeBytesAsString(NUM_BYTES);
869 reqBody.appId = FDP->ConsumeBytesAsString(NUM_BYTES);
870 reqBody.isDeduplication = FDP->ConsumeBool();
871
872 MessageParcel data;
873 MessageParcel reply;
874 reqBody.Marshalling(data);
875 mediaAssetsControllerService->Restore(data, reply);
876 }
877
StopRestoreFuzzer()878 static void StopRestoreFuzzer()
879 {
880 StopRestoreReqBody reqBody;
881 reqBody.keyPath = FDP->ConsumeBytesAsString(NUM_BYTES);
882
883 MessageParcel data;
884 MessageParcel reply;
885 reqBody.Marshalling(data);
886 mediaAssetsControllerService->StopRestore(data, reply);
887 }
888
GetAssetsFuzzer()889 static void GetAssetsFuzzer()
890 {
891 GetAssetsReqBody reqBody;
892 MessageParcel data;
893 MessageParcel reply;
894 reqBody.Marshalling(data);
895 OHOS::Media::IPC::IPCContext context(MessageOption(), 0);
896 mediaAssetsControllerService->GetAssets(data, reply, context);
897 }
898
GetBurstAssetsFuzzer()899 static void GetBurstAssetsFuzzer()
900 {
901 GetAssetsReqBody reqBody;
902 reqBody.burstKey = FDP->ConsumeBytesAsString(NUM_BYTES);
903 MessageParcel data;
904 MessageParcel reply;
905 reqBody.Marshalling(data);
906 OHOS::Media::IPC::IPCContext context(MessageOption(), 0);
907 mediaAssetsControllerService->GetBurstAssets(data, reply, context);
908 }
909
MediaAssetsControllerServiceFirstFuzzer()910 static void MediaAssetsControllerServiceFirstFuzzer()
911 {
912 FormInfoFuzzer();
913 CommitEditedAssetFuzzer();
914 SysTrashPhotosFuzzer();
915 DeletePhotosFuzzer();
916 DeletePhotosCompletedFuzzer();
917 AssetChangeSetFavoriteFuzzer();
918 AssetChangeSetHiddenFuzzer();
919 AssetChangeSetUserCommentFuzzer();
920 AssetChangeSetLocationFuzzer();
921 AssetChangeSetTitleFuzzer();
922 AssetChangeSetEditDataFuzzer();
923 AssetChangeSubmitCacheFuzzer();
924 AssetChangeCreateAssetFuzzer();
925 AssetChangeAddImageFuzzer();
926 SetCameraShotKeyFuzzer();
927 SaveCameraPhotoFuzzer();
928 DiscardCameraPhotoFuzzer();
929 SetEffectModeFuzzer();
930 SetOrientationFuzzer();
931 SetVideoEnhancementAttrFuzzer();
932 SetSupportedWatermarkTypeFuzzer();
933 DuplicateAssetsFuzzer();
934 CreateAssetFuzzer();
935 CreateAssetForAppFuzzer();
936 SetAssetTitleFuzzer();
937 SetAssetPendingFuzzer();
938 SetAssetsFavoriteFuzzer();
939 SetAssetsHiddenStatusFuzzer();
940 SetAssetsRecentShowStatusFuzzer();
941 SetAssetsUserCommentFuzzer();
942 GetAssetAnalysisDataFuzzer();
943 CloneAssetFuzzer();
944 RevertToOriginalFuzzer();
945 ConvertFormatFuzzer();
946 SubmitCloudEnhancementTasksFuzzer();
947 StartDownloadCloudMediaFuzzer();
948 RetainCloudMediaAssetFuzzer();
949 GetCloudMediaAssetStatusFuzzer();
950 GetEditDataFuzzer();
951 }
952
MediaAssetsControllerServiceSecondFuzzer()953 static void MediaAssetsControllerServiceSecondFuzzer()
954 {
955 RequestEditDataFuzzer();
956 IsEditedFuzzer();
957 StartAssetAnalysisFuzzer();
958 GrantPhotoUriPermissionFuzzer();
959 GrantPhotoUrisPermissionFuzzer();
960 CancelPhotoUriPermissionFuzzer();
961 StartThumbnailCreationTaskFuzzer();
962 StopThumbnailCreationTaskFuzzer();
963 RequestContentFuzzer();
964 GetCloudEnhancementPairFuzzer();
965 QueryCloudEnhancementTaskStateFuzzer();
966 QueryPhotoStatusFuzzer();
967 LogMovingPhotoFuzzer();
968 AddAssetVisitCountFuzzer();
969 GrantPhotoUriPermissionInnerFuzzer();
970 CancelPhotoUriPermissionInnerFuzzer();
971 GetResultSetFromDbFuzzer();
972 GetResultSetFromPhotosExtendFuzzer();
973 GetMovingPhotoDateModifiedFuzzer();
974 GetFilePathFromUriFuzzer();
975 GetUriFromFilePathFuzzer();
976 CloseAssetFuzzer();
977 CheckUriPermissionInnerFuzzer();
978 GetUrisByOldUrisInnerFuzzer();
979 RestoreFuzzer();
980 StopRestoreFuzzer();
981 GetAssetsFuzzer();
982 GetBurstAssetsFuzzer();
983
984 MessageParcel dataParcel;
985 MessageParcel reply;
986 mediaAssetsControllerService->GetIndexConstructProgress(dataParcel, reply);
987 mediaAssetsControllerService->PauseDownloadCloudMedia(dataParcel, reply);
988 mediaAssetsControllerService->CancelDownloadCloudMedia(dataParcel, reply);
989 }
990
Init()991 static void Init()
992 {
993 shared_ptr<MediaAssetsControllerService> mediaAssetsControllerService =
994 make_shared<MediaAssetsControllerService>();
995 }
996 } // namespace OHOS
997
LLVMFuzzerInitialize(int * argc,char *** argv)998 extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv)
999 {
1000 OHOS::Init();
1001 return 0;
1002 }
1003
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)1004 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
1005 {
1006 /* Run your code on data */
1007 FuzzedDataProvider fdp(data, size);
1008 if (data == nullptr) {
1009 return 0;
1010 }
1011 OHOS::FDP = &fdp;
1012 OHOS::MediaAssetsControllerServiceFirstFuzzer();
1013 OHOS::MediaAssetsControllerServiceSecondFuzzer();
1014 return 0;
1015 }