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  #include "gettrusteddevices_fuzzer.h"
17  
18  namespace OHOS {
FuzzDoGetTrustedDevices(const uint8_t * data,size_t size)19      bool FuzzDoGetTrustedDevices(const uint8_t* data, size_t size)
20      {
21          const DeviceGroupManager *gmInstance = GetGmInstance();
22          if (gmInstance == nullptr) {
23              return false;
24          }
25          if (data == nullptr) {
26              return false;
27          }
28          if (size < sizeof(int32_t)) {
29              return false;
30          }
31          const int32_t *osAccountId = reinterpret_cast<const int32_t *>(data);
32          std::string appId(reinterpret_cast<const char *>(data), size);
33          std::string groupId(reinterpret_cast<const char *>(data), size);
34          char *outDevInfo = nullptr;
35          uint32_t outDevNum = 0;
36          gmInstance->getTrustedDevices(*osAccountId, appId.c_str(), groupId.c_str(), &outDevInfo, &outDevNum);
37          return true;
38      }
39  }
40  
41  /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)42  extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size)
43  {
44      /* Run your code on data */
45      OHOS::FuzzDoGetTrustedDevices(data, size);
46      return 0;
47  }
48  
49