1 /*
2 * Copyright (c) 2022 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 #define private public
17 #define protected public
18 #include "reminder_request.h"
19 #undef private
20 #undef protected
21 #include "reminderrequestannex_fuzzer.h"
22
23 namespace OHOS {
DoSomethingInterestingWithMyAPI(const char * data,size_t size)24 bool DoSomethingInterestingWithMyAPI(const char* data, size_t size)
25 {
26 std::string stringData(data);
27 int32_t reminderId = static_cast<int32_t>(GetU32Data(data));
28 Notification::ReminderRequest reminderRequest(reminderId);
29 reminderRequest.SetSnoozeTimes(*data);
30 reminderRequest.SetSnoozeTimesDynamic(*data);
31 uint64_t timeIntervalInSeconds = 1;
32 reminderRequest.SetTimeInterval(timeIntervalInSeconds);
33 reminderRequest.SetTitle(stringData);
34 reminderRequest.SetTriggerTimeInMilli(timeIntervalInSeconds);
35 std::shared_ptr< Notification::ReminderRequest::WantAgentInfo> wantAgentInfo =
36 std::make_shared< Notification::ReminderRequest::WantAgentInfo>();
37 reminderRequest.SetWantAgentInfo(wantAgentInfo);
38 reminderRequest.ShouldShowImmediately();
39 reminderRequest.GetActionButtons();
40 reminderRequest.GetContent();
41 reminderRequest.GetExpiredContent();
42 reminderRequest.GetMaxScreenWantAgentInfo();
43 reminderRequest.GetNotificationId();
44 reminderRequest.GetNotificationRequest();
45 reminderRequest.GetReminderId();
46 reminderRequest.GetReminderTimeInMilli();
47 reminderRequest.SetReminderId(reminderId);
48 reminderRequest.SetReminderTimeInMilli(timeIntervalInSeconds);
49 uint64_t ringDurationInSeconds = 0;
50 reminderRequest.SetRingDuration(ringDurationInSeconds);
51 reminderRequest.GetSlotType();
52 reminderRequest.GetSnoozeContent();
53 reminderRequest.GetSnoozeTimes();
54 reminderRequest.GetSnoozeTimesDynamic();
55 reminderRequest.GetState();
56 reminderRequest.GetTimeInterval();
57 reminderRequest.GetTriggerTimeInMilli();
58 reminderRequest.GetUserId();
59 reminderRequest.GetUid();
60 reminderRequest.GetWantAgentInfo();
61 reminderRequest.GetReminderType();
62 reminderRequest.GetRingDuration();
63 reminderRequest.UpdateNextReminder();
64 reminderRequest.SetNextTriggerTime();
65 Parcel parcel;
66 reminderRequest.InitNotificationRequest();
67 reminderRequest.InitServerObj();
68 return reminderRequest.IsAlerting();
69 }
70 }
71
72 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)73 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
74 {
75 /* Run your code on data */
76 char *ch = ParseData(data, size);
77 if (ch != nullptr && size >= GetU32Size()) {
78 OHOS::DoSomethingInterestingWithMyAPI(ch, size);
79 free(ch);
80 ch = nullptr;
81 }
82 return 0;
83 }
84