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 }