• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 #include "context_c_fuzzer.h"
3 #include "../data.h"
4 #include "../../utils/model_utils.h"
5 
6 bool MSContextFuzzTest_ThreadNum(const uint8_t* data, size_t size) {
7     OH_AI_ContextHandle context = OH_AI_ContextCreate();
8     if (context == nullptr) {
9         printf("create context failed.\n");
10         return false;
11     }
12     Data dataFuzz(data, size);
13     int32_t threadNum = dataFuzz.GetData<int32_t>();
14     OH_AI_ContextSetThreadNum(context, threadNum);
15     AddContextDeviceCPU(context);
16     AddContextDeviceNNRT(context);
17 
18     OH_AI_ModelHandle model = OH_AI_ModelCreate();
19     if (model == nullptr) {
20         printf("create model failed.\n");
21         return false;
22     }
23     ModelPredict(model, context, "ml_face_isface", {}, false, true, false);
24     return true;
25 }
26 
27 bool MSContextFuzzTest_ThreadAffinityMode(const uint8_t* data, size_t size) {
28     OH_AI_ContextHandle context = OH_AI_ContextCreate();
29     if (context == nullptr) {
30         printf("create context failed.\n");
31         return false;
32     }
33     Data dataFuzz(data, size);
34     int32_t affinityMode = dataFuzz.GetData<int32_t>();
35     OH_AI_ContextSetThreadAffinityMode(context, affinityMode);
36     AddContextDeviceCPU(context);
37     AddContextDeviceNNRT(context);
38 
39     OH_AI_ModelHandle model = OH_AI_ModelCreate();
40     if (model == nullptr) {
41         printf("create model failed.\n");
42         return false;
43     }
44     ModelPredict(model, context, "ml_face_isface", {}, false, true, false);
45     return true;
46 }
47 
48 bool MSContextFuzzTest_Provider(const uint8_t* data, size_t size) {
49     OH_AI_ContextHandle context = OH_AI_ContextCreate();
50     if (context == nullptr) {
51         printf("create context failed.\n");
52         return false;
53     }
54     const char *infoProvider = reinterpret_cast<const char *>(data);
55     OH_AI_DeviceInfoHandle cpuDeviceInfo = OH_AI_DeviceInfoCreate(OH_AI_DEVICETYPE_CPU);
56     if (cpuDeviceInfo == nullptr) {
57         printf("OH_AI_DeviceInfoCreate failed.\n");
58         OH_AI_ContextDestroy(&context);
59         return OH_AI_STATUS_LITE_ERROR;
60     }
61     OH_AI_DeviceInfoSetProvider(cpuDeviceInfo, infoProvider);
62     OH_AI_DeviceInfoSetProviderDevice(cpuDeviceInfo, infoProvider);
63     OH_AI_ContextAddDeviceInfo(context, cpuDeviceInfo);
64 
65     AddContextDeviceNNRT(context);
66 
67     OH_AI_ModelHandle model = OH_AI_ModelCreate();
68     if (model == nullptr) {
69         printf("create model failed.\n");
70         return false;
71     }
72     ModelPredict(model, context, "ml_face_isface", {}, false, true, false);
73     return true;
74 }
75 
76 bool MSContextFuzzTest(const uint8_t* data, size_t size) {
77     bool ret = MSContextFuzzTest_ThreadNum(data, size) && MSContextFuzzTest_ThreadAffinityMode(data, size) &&
78                MSContextFuzzTest_Provider(data, size);
79     return ret;
80 }