| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- #include "RyanJsonFuzzer.h"
- RyanJsonBool_e isEnableRandomMemFail = RyanJsonTrue;
- int LLVMFuzzerTestOneInput(const char *data, uint32_t size)
- {
- // for (int i = 0; i < size; i++) { printf("%c", size, data[i]); }
- // printf("\r\n");
- RyanJsonInitHooks(NULL, RyanJsonFuzzerFree, RyanJsonFuzzerRealloc);
- RyanJsonInitHooks(RyanJsonFuzzerMalloc, NULL, RyanJsonFuzzerRealloc);
- RyanJsonInitHooks(RyanJsonFuzzerMalloc, RyanJsonFuzzerFree, NULL);
- RyanJsonInitHooks(NULL, NULL, NULL);
- RyanJsonInitHooks(RyanJsonFuzzerMalloc, RyanJsonFuzzerFree, 0 != size % 2 ? NULL : RyanJsonFuzzerRealloc);
- RyanJsonAssert(NULL == RyanJsonParseOptions(NULL, 100, RyanJsonFalse, NULL));
- RyanJsonAssert(NULL == RyanJsonParseOptions(data, 0, RyanJsonFalse, NULL));
- const char *parseEndPtr = NULL;
- RyanJson_t pJson = RyanJsonParseOptions(data, size, 0 != size % 3 ? RyanJsonTrue : RyanJsonFalse, &parseEndPtr);
- if (NULL != pJson)
- {
- assert(NULL != parseEndPtr && parseEndPtr - data <= size);
- {
- isEnableRandomMemFail = RyanJsonFalse;
- RyanJson_t pJson2 = RyanJsonDuplicate(pJson);
- isEnableRandomMemFail = RyanJsonTrue;
- RyanJsonCheckCode(RyanJsonFuzzerTestDelete(pJson2, size), {
- RyanJsonDelete(pJson2);
- goto exit__;
- });
- RyanJsonDelete(pJson2);
- }
- {
- isEnableRandomMemFail = RyanJsonFalse;
- RyanJson_t pJson2 = RyanJsonDuplicate(pJson);
- isEnableRandomMemFail = RyanJsonTrue;
- RyanJsonCheckCode(RyanJsonFuzzerTestDetach(pJson2, size), {
- RyanJsonDelete(pJson2);
- goto exit__;
- });
- RyanJsonDelete(pJson2);
- }
- RyanJsonFuzzerTestMinify(data, size);
- RyanJsonFuzzerTestParse(pJson, data, size);
- RyanJsonFuzzerTestGet(pJson, size);
- RyanJsonFuzzerTestDuplicate(pJson);
- RyanJsonCheckCode(RyanJsonFuzzerTestModify(pJson, size), { goto exit__; });
- RyanJsonCheckCode(RyanJsonFuzzerTestCreate(pJson, size), { goto exit__; });
- RyanJsonCheckCode(RyanJsonFuzzerTestReplace(pJson, size), { goto exit__; });
- RyanJsonDelete(pJson);
- }
- return 0;
- exit__:
- RyanJsonDelete(pJson);
- return 0;
- }
|