• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2022 Huawei Technologies Co., Ltd.
3  * Licensed under the Mulan PSL v2.
4  * You can use this software according to the terms and conditions of the Mulan PSL v2.
5  * You may obtain a copy of Mulan PSL v2 at:
6  *     http://license.coscl.org.cn/MulanPSL2
7  * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
8  * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
9  * PURPOSE.
10  * See the Mulan PSL v2 for more details.
11  */
12 
13 #include "libteecvendoropensession_fuzzer.h"
14 
15 #include <cstddef>
16 #include <cstdint>
17 #include "tee_client_api.h"
18 #include "tee_client_constants.h"
19 #include "tee_client_type.h"
20 #include "tee_client_inner.h"
21 #include "tee_client_inner_api.h"
22 
23 namespace OHOS {
LibteecVendorOpenSessionFuzzTest(const uint8_t * data,size_t size)24     bool LibteecVendorOpenSessionFuzzTest(const uint8_t *data, size_t size)
25     {
26         bool result = false;
27         if (size > sizeof(TEEC_Context) + sizeof(TEEC_Session) + sizeof(TEEC_UUID) + sizeof(uint32_t) +
28             sizeof(TEEC_Operation) + sizeof(uint32_t) + sizeof(TEEC_Parameter) + sizeof(TEEC_SharedMemory)) {
29             uint8_t *temp = const_cast<uint8_t *>(data);
30             TEEC_Context context = *reinterpret_cast<TEEC_Context *>(temp);
31             temp += sizeof(TEEC_Context);
32             TEEC_Session session = *reinterpret_cast<TEEC_Session *>(temp);
33             temp += sizeof(TEEC_Session);
34             TEEC_UUID uuid = *reinterpret_cast<TEEC_UUID *>(temp);
35             temp += sizeof(TEEC_UUID);
36             uint32_t connectionMethod = *reinterpret_cast<uint32_t *>(temp);
37             temp += sizeof(uint32_t);
38             TEEC_Operation operation = *reinterpret_cast<TEEC_Operation *>(temp);
39             temp += sizeof(TEEC_Operation);
40             uint32_t returnOrigin = *reinterpret_cast<uint32_t *>(temp);
41             temp += sizeof(uint32_t);
42 
43             TEEC_Parameter param = *reinterpret_cast<TEEC_Parameter *>(temp);
44             temp += sizeof(TEEC_Parameter);
45             TEEC_SharedMemory memory = *reinterpret_cast<TEEC_SharedMemory *>(temp);
46             temp += sizeof(TEEC_SharedMemory);
47             memory.context = &context;
48             param.memref.parent = &memory;
49             operation.params[0] = param;
50             operation.params[1] = param;
51             operation.params[2] = param;
52             operation.params[3] = param;
53             operation.session = &session;
54 
55             TEEC_Result ret = TEEC_OpenSession(&context, &session, &uuid, connectionMethod,
56                 reinterpret_cast<const char *>(temp), &operation, &returnOrigin);
57             if (ret == TEEC_SUCCESS) {
58                 TEEC_CloseSession(&session);
59             }
60         }
61         return result;
62     }
63 
TEEC_OpenSessionTest_001(const uint8_t * data,size_t size)64     void TEEC_OpenSessionTest_001(const uint8_t *data, size_t size)
65     {
66         TEEC_Context context = { 0 };
67         TEEC_Session session = { 0 };
68         TEEC_UUID uuid = { 0x95b9ad1e, 0x0af8, 0x4201, { 0x98, 0x91, 0x0d, 0xbe, 0x86, 0x02, 0xf3, 0x5f } };
69 
70         TEEC_Result ret = TEEC_OpenSession(NULL, NULL, NULL, TEEC_LOGIN_IDENTIFY, NULL, NULL, NULL);
71 
72         ret = TEEC_OpenSession(&context, NULL, NULL, TEEC_LOGIN_IDENTIFY, NULL, NULL, NULL);
73 
74         ret = TEEC_OpenSession(&context, &session, NULL, TEEC_LOGIN_IDENTIFY, NULL, NULL, NULL);
75 
76         ret = TEEC_OpenSession(&context, &session, &uuid, TEEC_LOGIN_IDENTIFY, NULL, NULL, NULL);
77         if (ret == TEEC_SUCCESS) {
78             TEEC_CloseSession(&session);
79         }
80         (void)data;
81         (void)size;
82     }
83 
TEEC_OpenSessionInnerTest_001(const uint8_t * data,size_t size)84     void TEEC_OpenSessionInnerTest_001(const uint8_t *data, size_t size)
85     {
86         int callingPid = 0;
87         TaFileInfo taFile;
88         taFile.taFp = NULL;
89         char path[] = "/vendor/bin/95b9ad1e-0af8-4201-9891-0dbe8602f35f.sec";
90         taFile.taPath = (uint8_t *)path;
91 
92         TEEC_ContextInner contextInner = { 0 };
93         TEEC_Session session = { 0 };
94         TEEC_UUID destination = { 0x95b9ad1e, 0x0af8, 0x4201, { 0x98, 0x91, 0x0d, 0xbe, 0x86, 0x02, 0xf3, 0x5f } };
95         TEEC_Operation operation = { 0 };
96         uint32_t retOrigin = 0;
97 
98         TEEC_Result ret = TEEC_OpenSessionInner(callingPid, &taFile, NULL, &session, &destination,
99             TEEC_LOGIN_IDENTIFY, NULL, &operation, &retOrigin);
100 
101         ret = TEEC_OpenSessionInner(callingPid, NULL, &contextInner, &session, &destination,
102             TEEC_LOGIN_IDENTIFY, NULL, &operation, &retOrigin);
103 
104         ret = TEEC_OpenSessionInner(callingPid, &taFile, &contextInner, NULL, &destination,
105             TEEC_LOGIN_IDENTIFY, NULL, &operation, &retOrigin);
106 
107         ret = TEEC_OpenSessionInner(callingPid, &taFile, &contextInner, &session, NULL,
108             TEEC_LOGIN_IDENTIFY, NULL, &operation, &retOrigin);
109 
110         ret = TEEC_OpenSessionInner(callingPid, &taFile, &contextInner, &session, &destination,
111             ~TEEC_LOGIN_IDENTIFY, NULL, &operation, &retOrigin);
112 
113         ret = TEEC_OpenSessionInner(callingPid, &taFile, &contextInner, &session, &destination,
114             TEEC_LOGIN_IDENTIFY, (void *)&callingPid, &operation, &retOrigin);
115 
116         operation.started = 0;
117         ret = TEEC_OpenSessionInner(callingPid, &taFile, &contextInner, &session, &destination,
118             TEEC_LOGIN_IDENTIFY, NULL, NULL, &retOrigin);
119 
120         operation.started = 0;
121         operation.paramTypes = TEEC_PARAM_TYPES(TEEC_NONE, TEEC_NONE, TEEC_NONE, TEEC_NONE);
122         ret = TEEC_OpenSessionInner(callingPid, &taFile, &contextInner, &session, &destination,
123             TEEC_LOGIN_IDENTIFY, NULL, &operation, &retOrigin);
124         if (ret == TEEC_SUCCESS) {
125             TEEC_CloseSession(&session);
126         }
127         (void)data;
128         (void)size;
129     }
130 
TEEC_OpenSessionInnerTest_002(const uint8_t * data,size_t size)131     void TEEC_OpenSessionInnerTest_002(const uint8_t *data, size_t size)
132     {
133         int callingPid = 0;
134         uint32_t retOrigin = 0;
135         TaFileInfo taFile;
136         taFile.taFp = NULL;
137         char path[] = "/vendor/bin/95b9ad1e-0af8-4201-9891-0dbe8602f35f";
138         taFile.taPath = (uint8_t *)path;
139 
140         TEEC_ContextInner contextInner = { 0 };
141         TEEC_Session session = { 0 };
142         TEEC_UUID destination = { 0x95b9ad1e, 0x0af8, 0x4201, { 0x98, 0x91, 0x0d, 0xbe, 0x86, 0x02, 0xf3, 0x5f } };
143 
144         TEEC_Result ret = TEEC_OpenSessionInner(callingPid, &taFile, &contextInner, &session, &destination,
145             TEEC_LOGIN_IDENTIFY, NULL, NULL, &retOrigin);
146         if (ret == TEEC_SUCCESS) {
147             TEEC_CloseSession(&session);
148         }
149         (void)data;
150         (void)size;
151     }
152 
TEEC_EncodeParamTest_001(const uint8_t * data,size_t size)153     void TEEC_EncodeParamTest_001(const uint8_t *data, size_t size)
154     {
155         int callingPid = 0;
156         uint32_t retOrigin = 0;
157         TaFileInfo taFile;
158         taFile.taFp = NULL;
159         char path[] = "/vendor/bin/95b9ad1e-0af8-4201-9891-0dbe8602f35f.sec";
160         taFile.taPath = (uint8_t *)path;
161 
162         TEEC_ContextInner contextInner = { 0 };
163         TEEC_Session session = { 0 };
164         TEEC_UUID destination = { 0x95b9ad1e, 0x0af8, 0x4201, { 0x98, 0x91, 0x0d, 0xbe, 0x86, 0x02, 0xf3, 0x5f } };
165         TEEC_Operation operation = { 0 };
166         operation.started = 1;
167         operation.paramTypes = TEEC_PARAM_TYPES(TEEC_MEMREF_TEMP_INPUT, TEEC_NONE, TEEC_NONE, TEEC_NONE);
168         char buf[4] = { 0 };
169         operation.params[0].tmpref.buffer = (void *)buf;
170         operation.params[0].tmpref.size = 4; // 4 size of memory
171         TEEC_Result ret = TEEC_OpenSessionInner(callingPid, &taFile, &contextInner, &session, &destination,
172             TEEC_LOGIN_IDENTIFY, NULL, &operation, &retOrigin);
173         if (ret == TEEC_SUCCESS) {
174             TEEC_CloseSession(&session);
175         }
176         (void)data;
177         (void)size;
178     }
179 
TEEC_EncodePartialParamTest_001(const uint8_t * data,size_t size)180     void TEEC_EncodePartialParamTest_001(const uint8_t *data, size_t size)
181     {
182         int callingPid = 0;
183         uint32_t retOrigin = 0;
184         TaFileInfo taFile;
185         taFile.taFp = NULL;
186         char path[] = "/vendor/bin/95b9ad1e-0af8-4201-9891-0dbe8602f35f.sec";
187         taFile.taPath = (uint8_t *)path;
188 
189         char buf[4] = { 0 };
190         TEEC_ContextInner contextInner = { 0 };
191         TEEC_Session session = { 0 };
192         TEEC_UUID destination = { 0x95b9ad1e, 0x0af8, 0x4201, { 0x98, 0x91, 0x0d, 0xbe, 0x86, 0x02, 0xf3, 0x5f } };
193         TEEC_Operation operation = { 0 };
194         operation.started = 1;
195         operation.paramTypes = TEEC_PARAM_TYPES(TEEC_MEMREF_PARTIAL_INPUT, TEEC_MEMREF_SHARED_INOUT,
196             TEEC_NONE, TEEC_NONE);
197         TEEC_SharedMemory sharedMem0 = { 0 }, sharedMem1 = { 0 };
198         operation.params[0].memref.parent = &sharedMem0;
199         operation.params[0].memref.parent->is_allocated = 0;
200         operation.params[0].memref.parent->buffer = (void *)buf;
201         operation.params[0].memref.parent->size = 4; // 4 size of memory
202         operation.params[0].memref.size = 4; // 4 size of memory
203         operation.params[0].memref.offset = 0;
204         operation.params[1].memref.parent = &sharedMem1;
205         operation.params[1].memref.parent->is_allocated = 1;
206         operation.params[1].memref.parent->buffer = (void *)buf;
207         operation.params[1].memref.parent->size = 4; // 4 size of memory
208         operation.params[1].memref.size = 4; // 4 size of memory
209         operation.params[1].memref.offset = 0;
210 
211         TEEC_Result ret = TEEC_OpenSessionInner(callingPid, &taFile, &contextInner, &session, &destination,
212             TEEC_LOGIN_IDENTIFY, NULL, &operation, &retOrigin);
213         if (ret == TEEC_SUCCESS) {
214             TEEC_CloseSession(&session);
215         }
216         (void)data;
217         (void)size;
218     }
219 
TranslateParamTypeTest_001(const uint8_t * data,size_t size)220     void TranslateParamTypeTest_001(const uint8_t *data, size_t size)
221     {
222         int callingPid = 0;
223         uint32_t retOrigin = 0;
224         TaFileInfo taFile;
225         taFile.taFp = NULL;
226         char path[] = "/vendor/bin/95b9ad1e-0af8-4201-9891-0dbe8602f35f.sec";
227         taFile.taPath = (uint8_t *)path;
228 
229         char buf[4] = { 0 };
230         TEEC_ContextInner contextInner = { 0 };
231         TEEC_Session session = { 0 };
232         TEEC_UUID destination = { 0x95b9ad1e, 0x0af8, 0x4201, { 0x98, 0x91, 0x0d, 0xbe, 0x86, 0x02, 0xf3, 0x5f } };
233         TEEC_Operation operation = { 0 };
234         operation.started = 1;
235         operation.paramTypes = TEEC_PARAM_TYPES(TEEC_MEMREF_WHOLE, TEEC_MEMREF_WHOLE, TEEC_NONE, TEEC_NONE);
236         TEEC_SharedMemory sharedMem = { 0 };
237         operation.params[0].memref.parent = &sharedMem;
238         operation.params[0].memref.parent->is_allocated = 0;
239         operation.params[0].memref.parent->flags = TEEC_MEM_INPUT;
240         operation.params[0].memref.parent->buffer = (void *)buf;
241         operation.params[0].memref.parent->size = 4; // 4 size of memory
242         operation.params[0].memref.size = 4; // 4 size of memory
243         operation.params[0].memref.offset = 0;
244         operation.params[1].memref.parent = &sharedMem;
245         operation.params[1].memref.parent->is_allocated = 0;
246         operation.params[1].memref.parent->flags = TEEC_MEM_OUTPUT;
247         operation.params[1].memref.parent->buffer = (void *)buf;
248         operation.params[1].memref.parent->size = 4; // 4 size of memory
249         operation.params[1].memref.size = 4; // 4 size of memory
250         operation.params[1].memref.offset = 0;
251 
252         TEEC_Result ret = TEEC_OpenSessionInner(callingPid, &taFile, &contextInner, &session, &destination,
253             TEEC_LOGIN_IDENTIFY, NULL, &operation, &retOrigin);
254 
255         operation.params[0].memref.parent->flags = TEEC_MEM_INOUT;
256         operation.params[1].memref.parent->flags = 0xffffffff;
257         ret = TEEC_OpenSessionInner(callingPid, &taFile, &contextInner, &session, &destination,
258             TEEC_LOGIN_IDENTIFY, NULL, &operation, &retOrigin);
259         if (ret == TEEC_SUCCESS) {
260             TEEC_CloseSession(&session);
261         }
262         (void)data;
263         (void)size;
264     }
265 
TEEC_EncodeIonParam_001(const uint8_t * data,size_t size)266     void TEEC_EncodeIonParam_001(const uint8_t *data, size_t size)
267     {
268         int callingPid = 0;
269         uint32_t retOrigin = 0;
270         TaFileInfo taFile;
271         taFile.taFp = NULL;
272         char path[] = "/vendor/bin/95b9ad1e-0af8-4201-9891-0dbe8602f35f.sec";
273         taFile.taPath = (uint8_t *)path;
274 
275         TEEC_ContextInner contextInner = { 0 };
276         TEEC_Session session = { 0 };
277         TEEC_UUID destination = { 0x95b9ad1e, 0x0af8, 0x4201, { 0x98, 0x91, 0x0d, 0xbe, 0x86, 0x02, 0xf3, 0x5f } };
278         TEEC_Operation operation = { 0 };
279         operation.started = 1;
280         operation.paramTypes = TEEC_PARAM_TYPES(TEEC_ION_INPUT, TEEC_ION_SGLIST_INPUT, TEEC_NONE, TEEC_NONE);
281         operation.params[0].ionref.ion_share_fd = 0;
282         operation.params[0].ionref.ion_size = 1;
283         operation.params[1].ionref.ion_share_fd = 0;
284         operation.params[1].ionref.ion_size = 1;
285 
286         TEEC_Result ret = TEEC_OpenSessionInner(callingPid, &taFile, &contextInner, &session, &destination,
287             TEEC_LOGIN_IDENTIFY, NULL, &operation, &retOrigin);
288         if (ret == TEEC_SUCCESS) {
289             TEEC_CloseSession(&session);
290         }
291         (void)data;
292         (void)size;
293     }
294 
TEEC_CheckTmpRefTest_001(const uint8_t * data,size_t size)295     void TEEC_CheckTmpRefTest_001(const uint8_t *data, size_t size)
296     {
297         TEEC_ContextInner context = { 0 };
298         TEEC_Operation operation = { 0 };
299         operation.started = 1;
300 
301         operation.paramTypes = TEEC_MEMREF_TEMP_INPUT;
302         operation.params[0].tmpref.buffer = NULL;
303         operation.params[0].tmpref.size = 1;
304         TEEC_Result ret = TEEC_CheckOperation(&context, &operation);
305 
306         operation.paramTypes = TEEC_MEMREF_TEMP_INPUT;
307         operation.params[0].tmpref.buffer = (void *)1;
308         operation.params[0].tmpref.size = 0;
309         ret = TEEC_CheckOperation(&context, &operation);
310         (void)ret;
311         (void)data;
312         (void)size;
313     }
314 
TEEC_CheckMemRefTest_001(const uint8_t * data,size_t size)315     void TEEC_CheckMemRefTest_001(const uint8_t *data, size_t size)
316     {
317         TEEC_ContextInner context = { 0 };
318         TEEC_Operation operation = { 0 };
319         operation.started = 1;
320         operation.paramTypes = TEEC_MEMREF_PARTIAL_INPUT;
321 
322         operation.params[0].memref.parent = NULL;
323         TEEC_Result ret = TEEC_CheckOperation(&context, &operation);
324 
325         TEEC_SharedMemory sharedMem = { 0 };
326         operation.params[0].memref.parent = &sharedMem;
327         operation.params[0].memref.parent->buffer = NULL;
328         ret = TEEC_CheckOperation(&context, &operation);
329 
330         char buf[4] = { 0 };
331         operation.params[0].memref.parent->buffer = (void *)buf;
332         operation.params[0].memref.parent->size = 0;
333         ret = TEEC_CheckOperation(&context, &operation);
334 
335         operation.params[0].memref.parent->size = 4; // 4 size of memory
336         operation.params[0].memref.parent->flags = 0;
337         ret = TEEC_CheckOperation(&context, &operation);
338 
339         operation.paramTypes = TEEC_MEMREF_PARTIAL_OUTPUT;
340         operation.params[0].memref.parent->flags = 0;
341         ret = TEEC_CheckOperation(&context, &operation);
342 
343         operation.paramTypes = TEEC_MEMREF_PARTIAL_INOUT;
344         operation.params[0].memref.parent->flags = 0;
345         ret = TEEC_CheckOperation(&context, &operation);
346 
347         operation.paramTypes = TEEC_MEMREF_PARTIAL_INOUT;
348         operation.params[0].memref.parent->flags = TEEC_MEM_INPUT;
349         ret = TEEC_CheckOperation(&context, &operation);
350 
351         operation.paramTypes = TEEC_MEMREF_WHOLE;
352         operation.params[0].memref.parent->flags = TEEC_MEM_INOUT;
353         operation.params[0].memref.parent->is_allocated = 0;
354         ret = TEEC_CheckOperation(&context, &operation);
355         (void)data;
356         (void)size;
357         (void)ret;
358     }
359 
TEEC_CheckMemRefTest_002(const uint8_t * data,size_t size)360     void TEEC_CheckMemRefTest_002(const uint8_t *data, size_t size)
361     {
362         TEEC_ContextInner context = { 0 };
363         TEEC_Operation operation = { 0 };
364         operation.started = 1;
365 
366         TEEC_SharedMemory sharedMem = { 0 };
367         operation.params[0].memref.parent = &sharedMem;
368 
369         char buf[4] = { 0 };
370         operation.params[0].memref.parent->buffer = (void *)buf;
371         operation.params[0].memref.parent->size = 4; // 4 size of memory
372         operation.params[0].memref.offset = 1;
373         operation.params[0].memref.size = 4; // 4 size of memory
374 
375         operation.paramTypes = TEEC_MEMREF_PARTIAL_INPUT;
376         operation.params[0].memref.parent->flags = TEEC_MEM_INPUT;
377         TEEC_Result ret = TEEC_CheckOperation(&context, &operation);
378 
379         operation.paramTypes = TEEC_MEMREF_PARTIAL_OUTPUT;
380         operation.params[0].memref.parent->flags = TEEC_MEM_OUTPUT;
381         ret = TEEC_CheckOperation(&context, &operation);
382 
383         operation.paramTypes = TEEC_MEMREF_PARTIAL_INOUT;
384         operation.params[0].memref.parent->flags = TEEC_MEM_INOUT;
385         ret = TEEC_CheckOperation(&context, &operation);
386         (void)data;
387         (void)size;
388         (void)ret;
389     }
390 
CheckSharedBufferExistTest_002(const uint8_t * data,size_t size)391     void CheckSharedBufferExistTest_002(const uint8_t *data, size_t size)
392     {
393         TEEC_Operation operation = { 0 };
394         operation.started = 1;
395 
396         TEEC_SharedMemory sharedMem = { 0 };
397         operation.params[0].memref.parent = &sharedMem;
398 
399         char buf[4] = { 0 };
400         operation.params[0].memref.parent->buffer = (void *)buf;
401         operation.params[0].memref.parent->size = 4; // 4 size of memory
402         operation.params[0].memref.offset = 0;
403 
404         operation.paramTypes = TEEC_MEMREF_WHOLE;
405         operation.params[0].memref.parent->is_allocated = 1;
406 
407         TEEC_Result ret = TEEC_CheckOperation(NULL, &operation);
408         (void)data;
409         (void)size;
410         (void)ret;
411     }
412 
TEEC_CheckOperationTest_001(const uint8_t * data,size_t size)413     void TEEC_CheckOperationTest_001(const uint8_t *data, size_t size)
414     {
415         TEEC_ContextInner context = { 0 };
416         TEEC_Operation operation = { 0 };
417         TEEC_Result ret = TEEC_CheckOperation(&context, NULL);
418 
419         operation.started = 0;
420         ret = TEEC_CheckOperation(&context, &operation);
421 
422         operation.started = 1;
423         operation.paramTypes = TEEC_PARAM_TYPES(TEEC_ION_INPUT, TEEC_ION_INPUT, TEEC_ION_INPUT, TEEC_ION_INPUT);
424         operation.params[0].ionref.ion_share_fd = -1;
425         ret = TEEC_CheckOperation(&context, &operation);
426 
427         operation.paramTypes = TEEC_PARAM_TYPES(TEEC_ION_SGLIST_INPUT, TEEC_ION_INPUT, TEEC_ION_INPUT, TEEC_ION_INPUT);
428         operation.params[0].ionref.ion_share_fd = -1;
429         ret = TEEC_CheckOperation(&context, &operation);
430 
431         operation.paramTypes = TEEC_PARAM_TYPES(TEEC_ION_INPUT, TEEC_ION_INPUT, TEEC_ION_INPUT, TEEC_ION_INPUT);
432         operation.params[0].ionref.ion_share_fd = 0;
433         operation.params[0].ionref.ion_size = 0;
434         ret = TEEC_CheckOperation(&context, &operation);
435 
436         operation.paramTypes = TEEC_PARAM_TYPES(TEEC_ION_SGLIST_INPUT, TEEC_ION_INPUT, TEEC_ION_INPUT, TEEC_ION_INPUT);
437         operation.params[0].ionref.ion_share_fd = 0;
438         operation.params[0].ionref.ion_size = 0;
439         ret = TEEC_CheckOperation(&context, &operation);
440 
441         operation.paramTypes = TEEC_PARAM_TYPES(TEEC_VALUE_INPUT, TEEC_NONE, TEEC_MEMREF_SHARED_INOUT, TEEC_NONE);
442         ret = TEEC_CheckOperation(&context, &operation);
443         (void)data;
444         (void)size;
445         (void)ret;
446     }
447 }
448 
449 /* Fuzzer entry point */
LLVMFuzzerTestOneInput(const uint8_t * data,size_t size)450 extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
451 {
452     /* Run your code on data */
453     OHOS::LibteecVendorOpenSessionFuzzTest(data, size);
454     OHOS::TEEC_OpenSessionTest_001(data, size);
455     OHOS::TEEC_OpenSessionInnerTest_001(data, size);
456     OHOS::TEEC_OpenSessionInnerTest_002(data, size);
457     OHOS::TEEC_EncodeParamTest_001(data, size);
458     OHOS::TEEC_EncodePartialParamTest_001(data, size);
459     OHOS::TranslateParamTypeTest_001(data, size);
460     OHOS::TEEC_EncodeIonParam_001(data, size);
461     OHOS::TEEC_CheckTmpRefTest_001(data, size);
462     OHOS::TEEC_CheckMemRefTest_001(data, size);
463     OHOS::TEEC_CheckMemRefTest_002(data, size);
464     OHOS::CheckSharedBufferExistTest_002(data, size);
465     OHOS::TEEC_CheckOperationTest_001(data, size);
466     return 0;
467 }