1
2 #include "context_c_fuzzer.h"
3 #include "../data.h"
4 #include "../../utils/model_utils.h"
5
MSContextFuzzTest_ThreadNum(const uint8_t *data, size_t size)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
MSContextFuzzTest_ThreadAffinityMode(const uint8_t *data, size_t size)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
MSContextFuzzTest_Provider(const uint8_t *data, size_t size)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 char *infoProvider = static_cast<char *>(malloc(size + 1));
55 if (infoProvider == nullptr) {
56 printf("malloc failed.\n");
57 return false;
58 }
59 if (memcpy_s(infoProvider, size + 1, data, size) != EOK) {
60 printf("memcpy_s failed.");
61 free(infoProvider);
62 return false;
63 }
64 infoProvider[size] = '\0';
65 OH_AI_DeviceInfoHandle cpuDeviceInfo = OH_AI_DeviceInfoCreate(OH_AI_DEVICETYPE_CPU);
66 if (cpuDeviceInfo == nullptr) {
67 printf("OH_AI_DeviceInfoCreate failed.\n");
68 OH_AI_ContextDestroy(&context);
69 free(infoProvider);
70 return OH_AI_STATUS_LITE_ERROR;
71 }
72 OH_AI_DeviceInfoSetProvider(cpuDeviceInfo, infoProvider);
73 OH_AI_DeviceInfoSetProviderDevice(cpuDeviceInfo, infoProvider);
74 OH_AI_ContextAddDeviceInfo(context, cpuDeviceInfo);
75
76 AddContextDeviceNNRT(context);
77
78 OH_AI_ModelHandle model = OH_AI_ModelCreate();
79 if (model == nullptr) {
80 printf("create model failed.\n");
81 free(infoProvider);
82 return false;
83 }
84 ModelPredict(model, context, "ml_face_isface", {}, false, true, false);
85 free(infoProvider);
86 return true;
87 }
88
89
MSContextFuzzTest_ThreadNum_Add1(const uint8_t *data, size_t size)90 bool MSContextFuzzTest_ThreadNum_Add1(const uint8_t *data, size_t size) {
91 OH_AI_ContextHandle context = OH_AI_ContextCreate();
92 if (context == nullptr) {
93 printf("create context failed.\n");
94 return false;
95 }
96 Data dataFuzz(data, size);
97 int32_t threadNum = dataFuzz.GetData<int32_t>();
98 OH_AI_ContextSetThreadNum(context, threadNum);
99 AddContextDeviceCPU(context);
100
101 OH_AI_ModelHandle model = OH_AI_ModelCreate();
102 if (model == nullptr) {
103 printf("create model failed.\n");
104 return false;
105 }
106 ModelPredict(model, context, "ml_face_isface", {}, true, true, false);
107 return true;
108 }
109
MSContextFuzzTest_ThreadAffinityMode_Add1(const uint8_t *data, size_t size)110 bool MSContextFuzzTest_ThreadAffinityMode_Add1(const uint8_t *data, size_t size) {
111 OH_AI_ContextHandle context = OH_AI_ContextCreate();
112 if (context == nullptr) {
113 printf("create context failed.\n");
114 return false;
115 }
116 Data dataFuzz(data, size);
117 int32_t affinityMode = dataFuzz.GetData<int32_t>();
118 OH_AI_ContextSetThreadAffinityMode(context, affinityMode);
119 AddContextDeviceCPU(context);
120
121 OH_AI_ModelHandle model = OH_AI_ModelCreate();
122 if (model == nullptr) {
123 printf("create model failed.\n");
124 return false;
125 }
126 ModelPredict(model, context, "ml_face_isface", {}, true, true, false);
127 return true;
128 }
129
MSContextFuzzTest_Provider_Add1(const uint8_t *data, size_t size)130 bool MSContextFuzzTest_Provider_Add1(const uint8_t *data, size_t size) {
131 OH_AI_ContextHandle context = OH_AI_ContextCreate();
132 if (context == nullptr) {
133 printf("create context failed.\n");
134 return false;
135 }
136 char *infoProvider = static_cast<char *>(malloc(size + 1));
137 if (infoProvider == nullptr) {
138 printf("malloc failed.\n");
139 return false;
140 }
141 if (memcpy_s(infoProvider, size + 1, data, size) != EOK) {
142 printf("memcpy_s failed.");
143 free(infoProvider);
144 return false;
145 }
146 infoProvider[size] = '\0';
147 OH_AI_DeviceInfoHandle cpuDeviceInfo = OH_AI_DeviceInfoCreate(OH_AI_DEVICETYPE_CPU);
148 if (cpuDeviceInfo == nullptr) {
149 printf("OH_AI_DeviceInfoCreate failed.\n");
150 OH_AI_ContextDestroy(&context);
151 free(infoProvider);
152 return OH_AI_STATUS_LITE_ERROR;
153 }
154 OH_AI_DeviceInfoSetProvider(cpuDeviceInfo, infoProvider);
155 OH_AI_DeviceInfoSetProviderDevice(cpuDeviceInfo, infoProvider);
156 OH_AI_ContextAddDeviceInfo(context, cpuDeviceInfo);
157
158 OH_AI_ModelHandle model = OH_AI_ModelCreate();
159 if (model == nullptr) {
160 printf("create model failed.\n");
161 free(infoProvider);
162 return false;
163 }
164 ModelPredict(model, context, "ml_face_isface", {}, true, true, false);
165 free(infoProvider);
166 return true;
167 }
168
MSContextFuzzTest_ThreadNum_Add2(const uint8_t *data, size_t size)169 bool MSContextFuzzTest_ThreadNum_Add2(const uint8_t *data, size_t size) {
170 OH_AI_ContextHandle context = OH_AI_ContextCreate();
171 if (context == nullptr) {
172 printf("create context failed.\n");
173 return false;
174 }
175 Data dataFuzz(data, size);
176 int32_t threadNum = dataFuzz.GetData<int32_t>();
177 OH_AI_ContextSetThreadNum(context, threadNum);
178 AddContextDeviceCPU(context);
179
180 OH_AI_ModelHandle model = OH_AI_ModelCreate();
181 if (model == nullptr) {
182 printf("create model failed.\n");
183 return false;
184 }
185 ModelPredict(model, context, "ml_face_isface", {}, false, true, true);
186 return true;
187 }
188
MSContextFuzzTest_ThreadAffinityMode_Add2(const uint8_t *data, size_t size)189 bool MSContextFuzzTest_ThreadAffinityMode_Add2(const uint8_t *data, size_t size) {
190 OH_AI_ContextHandle context = OH_AI_ContextCreate();
191 if (context == nullptr) {
192 printf("create context failed.\n");
193 return false;
194 }
195 Data dataFuzz(data, size);
196 int32_t affinityMode = dataFuzz.GetData<int32_t>();
197 OH_AI_ContextSetThreadAffinityMode(context, affinityMode);
198 AddContextDeviceCPU(context);
199
200 OH_AI_ModelHandle model = OH_AI_ModelCreate();
201 if (model == nullptr) {
202 printf("create model failed.\n");
203 return false;
204 }
205 ModelPredict(model, context, "ml_face_isface", {}, false, true, true);
206 return true;
207 }
208
MSContextFuzzTest_Provider_Add2(const uint8_t *data, size_t size)209 bool MSContextFuzzTest_Provider_Add2(const uint8_t *data, size_t size) {
210 OH_AI_ContextHandle context = OH_AI_ContextCreate();
211 if (context == nullptr) {
212 printf("create context failed.\n");
213 return false;
214 }
215 char *infoProvider = static_cast<char *>(malloc(size + 1));
216 if (infoProvider == nullptr) {
217 printf("malloc failed.\n");
218 return false;
219 }
220 if (memcpy_s(infoProvider, size + 1, data, size) != EOK) {
221 printf("memcpy_s failed.");
222 free(infoProvider);
223 return false;
224 }
225 infoProvider[size] = '\0';
226 OH_AI_DeviceInfoHandle cpuDeviceInfo = OH_AI_DeviceInfoCreate(OH_AI_DEVICETYPE_CPU);
227 if (cpuDeviceInfo == nullptr) {
228 printf("OH_AI_DeviceInfoCreate failed.\n");
229 OH_AI_ContextDestroy(&context);
230 free(infoProvider);
231 return OH_AI_STATUS_LITE_ERROR;
232 }
233 OH_AI_DeviceInfoSetProvider(cpuDeviceInfo, infoProvider);
234 OH_AI_DeviceInfoSetProviderDevice(cpuDeviceInfo, infoProvider);
235 OH_AI_ContextAddDeviceInfo(context, cpuDeviceInfo);
236
237 OH_AI_ModelHandle model = OH_AI_ModelCreate();
238 if (model == nullptr) {
239 printf("create model failed.\n");
240 free(infoProvider);
241 return false;
242 }
243 ModelPredict(model, context, "ml_face_isface", {}, false, true, true);
244 free(infoProvider);
245 return true;
246 }
247
MSContextFuzzTest_ThreadNum_Add3(const uint8_t *data, size_t size)248 bool MSContextFuzzTest_ThreadNum_Add3(const uint8_t *data, size_t size) {
249 OH_AI_ContextHandle context = OH_AI_ContextCreate();
250 if (context == nullptr) {
251 printf("create context failed.\n");
252 return false;
253 }
254 Data dataFuzz(data, size);
255 int32_t threadNum = dataFuzz.GetData<int32_t>();
256 OH_AI_ContextSetThreadNum(context, threadNum);
257 AddContextDeviceCPU(context);
258
259 OH_AI_ModelHandle model = OH_AI_ModelCreate();
260 if (model == nullptr) {
261 printf("create model failed.\n");
262 return false;
263 }
264 ModelPredict_ModelBuild(model, context, "ml_face_isface", true);
265 return true;
266 }
267
MSContextFuzzTest_ThreadNum_Add4(const uint8_t *data, size_t size)268 bool MSContextFuzzTest_ThreadNum_Add4(const uint8_t *data, size_t size) {
269 OH_AI_ContextHandle context = OH_AI_ContextCreate();
270 if (context == nullptr) {
271 printf("create context failed.\n");
272 return false;
273 }
274 Data dataFuzz(data, size);
275 int32_t threadNum = dataFuzz.GetData<int32_t>();
276 OH_AI_ContextSetThreadNum(context, threadNum);
277 AddContextDeviceCPU(context);
278
279 OH_AI_ModelHandle model = OH_AI_ModelCreate();
280 if (model == nullptr) {
281 printf("create model failed.\n");
282 return false;
283 }
284 ModelPredict_ModelBuild(model, context, "ml_face_isface", false);
285 return true;
286 }
287
MSContextFuzzTest_ThreadAffinityMode_Add3(const uint8_t *data, size_t size)288 bool MSContextFuzzTest_ThreadAffinityMode_Add3(const uint8_t *data, size_t size) {
289 OH_AI_ContextHandle context = OH_AI_ContextCreate();
290 if (context == nullptr) {
291 printf("create context failed.\n");
292 return false;
293 }
294 Data dataFuzz(data, size);
295 int32_t affinityMode = dataFuzz.GetData<int32_t>();
296 OH_AI_ContextSetThreadAffinityMode(context, affinityMode);
297 AddContextDeviceCPU(context);
298
299 OH_AI_ModelHandle model = OH_AI_ModelCreate();
300 if (model == nullptr) {
301 printf("create model failed.\n");
302 return false;
303 }
304 ModelPredict_ModelBuild(model, context, "ml_face_isface", true);
305 return true;
306 }
307
MSContextFuzzTest_ThreadAffinityMode_Add4(const uint8_t *data, size_t size)308 bool MSContextFuzzTest_ThreadAffinityMode_Add4(const uint8_t *data, size_t size) {
309 OH_AI_ContextHandle context = OH_AI_ContextCreate();
310 if (context == nullptr) {
311 printf("create context failed.\n");
312 return false;
313 }
314 Data dataFuzz(data, size);
315 int32_t affinityMode = dataFuzz.GetData<int32_t>();
316 OH_AI_ContextSetThreadAffinityMode(context, affinityMode);
317 AddContextDeviceCPU(context);
318
319 OH_AI_ModelHandle model = OH_AI_ModelCreate();
320 if (model == nullptr) {
321 printf("create model failed.\n");
322 return false;
323 }
324 ModelPredict_ModelBuild(model, context, "ml_face_isface", false);
325 return true;
326 }
327
MSContextFuzzTest_Provider_Add3(const uint8_t* data, size_t size)328 bool MSContextFuzzTest_Provider_Add3(const uint8_t* data, size_t size) {
329 OH_AI_ContextHandle context = OH_AI_ContextCreate();
330 if (context == nullptr) {
331 printf("create context failed.\n");
332 return false;
333 }
334 char *infoProvider = static_cast<char *>(malloc(size + 1));
335 if (infoProvider == nullptr) {
336 printf("malloc failed.\n");
337 return false;
338 }
339 if (memcpy_s(infoProvider, size + 1, data, size) != EOK) {
340 printf("memcpy_s failed.");
341 free(infoProvider);
342 return false;
343 }
344 infoProvider[size] = '\0';
345 OH_AI_DeviceInfoHandle cpuDeviceInfo = OH_AI_DeviceInfoCreate(OH_AI_DEVICETYPE_CPU);
346 if (cpuDeviceInfo == nullptr) {
347 printf("OH_AI_DeviceInfoCreate failed.\n");
348 OH_AI_ContextDestroy(&context);
349 free(infoProvider);
350 return OH_AI_STATUS_LITE_ERROR;
351 }
352 OH_AI_DeviceInfoSetProvider(cpuDeviceInfo, infoProvider);
353 OH_AI_DeviceInfoSetProviderDevice(cpuDeviceInfo, infoProvider);
354 OH_AI_ContextAddDeviceInfo(context, cpuDeviceInfo);
355
356 OH_AI_ModelHandle model = OH_AI_ModelCreate();
357 if (model == nullptr) {
358 printf("create model failed.\n");
359 free(infoProvider);
360 return false;
361 }
362 ModelPredict_ModelBuild(model, context, "ml_face_isface", true);
363 free(infoProvider);
364 return true;
365 }
366
MSContextFuzzTest_Provider_Add4(const uint8_t *data, size_t size)367 bool MSContextFuzzTest_Provider_Add4(const uint8_t *data, size_t size) {
368 OH_AI_ContextHandle context = OH_AI_ContextCreate();
369 if (context == nullptr) {
370 printf("create context failed.\n");
371 return false;
372 }
373 char *infoProvider = static_cast<char *>(malloc(size + 1));
374 if (infoProvider == nullptr) {
375 printf("malloc failed.\n");
376 return false;
377 }
378 if (memcpy_s(infoProvider, size + 1, data, size) != EOK) {
379 printf("memcpy_s failed.");
380 free(infoProvider);
381 return false;
382 }
383 infoProvider[size] = '\0';
384 OH_AI_DeviceInfoHandle cpuDeviceInfo = OH_AI_DeviceInfoCreate(OH_AI_DEVICETYPE_CPU);
385 if (cpuDeviceInfo == nullptr) {
386 printf("OH_AI_DeviceInfoCreate failed.\n");
387 OH_AI_ContextDestroy(&context);
388 free(infoProvider);
389 return OH_AI_STATUS_LITE_ERROR;
390 }
391 OH_AI_DeviceInfoSetProvider(cpuDeviceInfo, infoProvider);
392 OH_AI_DeviceInfoSetProviderDevice(cpuDeviceInfo, infoProvider);
393 OH_AI_ContextAddDeviceInfo(context, cpuDeviceInfo);
394
395 OH_AI_ModelHandle model = OH_AI_ModelCreate();
396 if (model == nullptr) {
397 printf("create model failed.\n");
398 free(infoProvider);
399 return false;
400 }
401 ModelPredict_ModelBuild(model, context, "ml_face_isface", false);
402 free(infoProvider);
403 return true;
404 }
405
406
MSContextFuzzTest(const uint8_t *data, size_t size)407 bool MSContextFuzzTest(const uint8_t *data, size_t size) {
408 bool ret = MSContextFuzzTest_ThreadNum(data, size) && MSContextFuzzTest_ThreadNum_Add1(data, size) &&
409 MSContextFuzzTest_ThreadNum_Add2(data, size) && MSContextFuzzTest_ThreadNum_Add3(data, size) &&
410 MSContextFuzzTest_ThreadNum_Add4(data, size) && MSContextFuzzTest_ThreadAffinityMode(data, size) &&
411 MSContextFuzzTest_ThreadAffinityMode_Add1(data, size) &&
412 MSContextFuzzTest_ThreadAffinityMode_Add2(data, size) &&
413 MSContextFuzzTest_ThreadAffinityMode_Add3(data, size) &&
414 MSContextFuzzTest_ThreadAffinityMode_Add4(data, size) && MSContextFuzzTest_Provider(data, size) &&
415 MSContextFuzzTest_Provider_Add1(data, size) && MSContextFuzzTest_Provider_Add2(data, size) &&
416 MSContextFuzzTest_Provider_Add3(data, size) && MSContextFuzzTest_Provider_Add4(data, size);
417 return ret;
418 }