• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 "message_user.h"
19 #undef private
20 #undef protected
21 #include "messageuser_fuzzer.h"
22 
23 namespace OHOS {
24     namespace {
25         constexpr uint8_t ENABLE = 2;
26     }
DoSomethingInterestingWithMyAPI(const char * data,size_t size)27     bool DoSomethingInterestingWithMyAPI(const char* data, size_t size)
28     {
29         std::string key(data);
30         Notification::MessageUser messageUser;
31         // test SetKey function
32         messageUser.SetKey(key);
33         // test SetName function
34         std::string name(data);
35         messageUser.SetName(name);
36         // test SetPixelMap function
37         std::shared_ptr<Media::PixelMap> pixelMap = std::make_shared<Media::PixelMap>();
38         messageUser.SetPixelMap(pixelMap);
39         // test SetUri function
40         Uri uri(key);
41         messageUser.SetUri(uri);
42         // test SetMachine function
43         bool enabled = *data % ENABLE;
44         messageUser.SetMachine(enabled);
45         // test SetUserAsImportant function
46         messageUser.SetUserAsImportant(enabled);
47         // test GetKey function
48         messageUser.GetKey();
49         // test GetName function
50         messageUser.GetName();
51         // test GetPixelMap function
52         messageUser.GetPixelMap();
53         // test GetUri function
54         messageUser.GetUri();
55         // test IsMachine function
56         messageUser.IsMachine();
57         // test IsUserImportant function
58         messageUser.IsUserImportant();
59         // test ToJson function
60         nlohmann::json jsonObject;
61         messageUser.ToJson(jsonObject);
62         messageUser.FromJson(jsonObject);
63         return true;
64     }
65 }
66 
67 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)68 extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
69 {
70     /* Run your code on data */
71     char *ch = ParseData(data, size);
72     if (ch != nullptr && size >= GetU32Size()) {
73         OHOS::DoSomethingInterestingWithMyAPI(ch, size);
74         free(ch);
75         ch = nullptr;
76     }
77     return 0;
78 }
79