1*7c568831SAndroid Build Coastguard Worker /* 2*7c568831SAndroid Build Coastguard Worker * fuzz.h: Common functions and macros for fuzzing. 3*7c568831SAndroid Build Coastguard Worker * 4*7c568831SAndroid Build Coastguard Worker * See Copyright for the status of this software. 5*7c568831SAndroid Build Coastguard Worker */ 6*7c568831SAndroid Build Coastguard Worker 7*7c568831SAndroid Build Coastguard Worker #ifndef __XML_FUZZERCOMMON_H__ 8*7c568831SAndroid Build Coastguard Worker #define __XML_FUZZERCOMMON_H__ 9*7c568831SAndroid Build Coastguard Worker 10*7c568831SAndroid Build Coastguard Worker #include <stddef.h> 11*7c568831SAndroid Build Coastguard Worker #include <stdio.h> 12*7c568831SAndroid Build Coastguard Worker #include <libxml/parser.h> 13*7c568831SAndroid Build Coastguard Worker 14*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus 15*7c568831SAndroid Build Coastguard Worker extern "C" { 16*7c568831SAndroid Build Coastguard Worker #endif 17*7c568831SAndroid Build Coastguard Worker 18*7c568831SAndroid Build Coastguard Worker #if __GNUC__ * 100 + __GNUC_MINOR__ >= 207 || defined(__clang__) 19*7c568831SAndroid Build Coastguard Worker #define ATTRIBUTE_UNUSED __attribute__((unused)) 20*7c568831SAndroid Build Coastguard Worker #else 21*7c568831SAndroid Build Coastguard Worker #define ATTRIBUTE_UNUSED 22*7c568831SAndroid Build Coastguard Worker #endif 23*7c568831SAndroid Build Coastguard Worker 24*7c568831SAndroid Build Coastguard Worker #if defined(LIBXML_HTML_ENABLED) 25*7c568831SAndroid Build Coastguard Worker #define HAVE_HTML_FUZZER 26*7c568831SAndroid Build Coastguard Worker #endif 27*7c568831SAndroid Build Coastguard Worker #if 1 28*7c568831SAndroid Build Coastguard Worker #define HAVE_LINT_FUZZER 29*7c568831SAndroid Build Coastguard Worker #endif 30*7c568831SAndroid Build Coastguard Worker #if defined(LIBXML_READER_ENABLED) 31*7c568831SAndroid Build Coastguard Worker #define HAVE_READER_FUZZER 32*7c568831SAndroid Build Coastguard Worker #endif 33*7c568831SAndroid Build Coastguard Worker #if defined(LIBXML_REGEXP_ENABLED) 34*7c568831SAndroid Build Coastguard Worker #define HAVE_REGEXP_FUZZER 35*7c568831SAndroid Build Coastguard Worker #endif 36*7c568831SAndroid Build Coastguard Worker #if defined(LIBXML_SCHEMAS_ENABLED) 37*7c568831SAndroid Build Coastguard Worker #define HAVE_SCHEMA_FUZZER 38*7c568831SAndroid Build Coastguard Worker #endif 39*7c568831SAndroid Build Coastguard Worker #if 1 40*7c568831SAndroid Build Coastguard Worker #define HAVE_URI_FUZZER 41*7c568831SAndroid Build Coastguard Worker #endif 42*7c568831SAndroid Build Coastguard Worker #if defined(LIBXML_VALID_ENABLED) 43*7c568831SAndroid Build Coastguard Worker #define HAVE_VALID_FUZZER 44*7c568831SAndroid Build Coastguard Worker #endif 45*7c568831SAndroid Build Coastguard Worker #if defined(LIBXML_XINCLUDE_ENABLED) 46*7c568831SAndroid Build Coastguard Worker #define HAVE_XINCLUDE_FUZZER 47*7c568831SAndroid Build Coastguard Worker #endif 48*7c568831SAndroid Build Coastguard Worker #if 1 49*7c568831SAndroid Build Coastguard Worker #define HAVE_XML_FUZZER 50*7c568831SAndroid Build Coastguard Worker #endif 51*7c568831SAndroid Build Coastguard Worker #if defined(LIBXML_XPTR_ENABLED) 52*7c568831SAndroid Build Coastguard Worker #define HAVE_XPATH_FUZZER 53*7c568831SAndroid Build Coastguard Worker #endif 54*7c568831SAndroid Build Coastguard Worker 55*7c568831SAndroid Build Coastguard Worker int 56*7c568831SAndroid Build Coastguard Worker LLVMFuzzerInitialize(int *argc, char ***argv); 57*7c568831SAndroid Build Coastguard Worker 58*7c568831SAndroid Build Coastguard Worker int 59*7c568831SAndroid Build Coastguard Worker LLVMFuzzerTestOneInput(const char *data, size_t size); 60*7c568831SAndroid Build Coastguard Worker 61*7c568831SAndroid Build Coastguard Worker void 62*7c568831SAndroid Build Coastguard Worker xmlFuzzErrorFunc(void *ctx, const char *msg, ...); 63*7c568831SAndroid Build Coastguard Worker 64*7c568831SAndroid Build Coastguard Worker void 65*7c568831SAndroid Build Coastguard Worker xmlFuzzSErrorFunc(void *ctx, const xmlError *error); 66*7c568831SAndroid Build Coastguard Worker 67*7c568831SAndroid Build Coastguard Worker void 68*7c568831SAndroid Build Coastguard Worker xmlFuzzMemSetup(void); 69*7c568831SAndroid Build Coastguard Worker 70*7c568831SAndroid Build Coastguard Worker void 71*7c568831SAndroid Build Coastguard Worker xmlFuzzMemSetLimit(size_t limit); 72*7c568831SAndroid Build Coastguard Worker 73*7c568831SAndroid Build Coastguard Worker int 74*7c568831SAndroid Build Coastguard Worker xmlFuzzMallocFailed(void); 75*7c568831SAndroid Build Coastguard Worker 76*7c568831SAndroid Build Coastguard Worker void 77*7c568831SAndroid Build Coastguard Worker xmlFuzzResetMallocFailed(void); 78*7c568831SAndroid Build Coastguard Worker 79*7c568831SAndroid Build Coastguard Worker void 80*7c568831SAndroid Build Coastguard Worker xmlFuzzCheckMallocFailure(const char *func, int expect); 81*7c568831SAndroid Build Coastguard Worker 82*7c568831SAndroid Build Coastguard Worker void 83*7c568831SAndroid Build Coastguard Worker xmlFuzzDataInit(const char *data, size_t size); 84*7c568831SAndroid Build Coastguard Worker 85*7c568831SAndroid Build Coastguard Worker void 86*7c568831SAndroid Build Coastguard Worker xmlFuzzDataCleanup(void); 87*7c568831SAndroid Build Coastguard Worker 88*7c568831SAndroid Build Coastguard Worker void 89*7c568831SAndroid Build Coastguard Worker xmlFuzzWriteInt(FILE *out, size_t v, int size); 90*7c568831SAndroid Build Coastguard Worker 91*7c568831SAndroid Build Coastguard Worker size_t 92*7c568831SAndroid Build Coastguard Worker xmlFuzzReadInt(int size); 93*7c568831SAndroid Build Coastguard Worker 94*7c568831SAndroid Build Coastguard Worker size_t 95*7c568831SAndroid Build Coastguard Worker xmlFuzzBytesRemaining(void); 96*7c568831SAndroid Build Coastguard Worker 97*7c568831SAndroid Build Coastguard Worker const char * 98*7c568831SAndroid Build Coastguard Worker xmlFuzzReadRemaining(size_t *size); 99*7c568831SAndroid Build Coastguard Worker 100*7c568831SAndroid Build Coastguard Worker void 101*7c568831SAndroid Build Coastguard Worker xmlFuzzWriteString(FILE *out, const char *str); 102*7c568831SAndroid Build Coastguard Worker 103*7c568831SAndroid Build Coastguard Worker const char * 104*7c568831SAndroid Build Coastguard Worker xmlFuzzReadString(size_t *size); 105*7c568831SAndroid Build Coastguard Worker 106*7c568831SAndroid Build Coastguard Worker void 107*7c568831SAndroid Build Coastguard Worker xmlFuzzReadEntities(void); 108*7c568831SAndroid Build Coastguard Worker 109*7c568831SAndroid Build Coastguard Worker const char * 110*7c568831SAndroid Build Coastguard Worker xmlFuzzMainUrl(void); 111*7c568831SAndroid Build Coastguard Worker 112*7c568831SAndroid Build Coastguard Worker const char * 113*7c568831SAndroid Build Coastguard Worker xmlFuzzMainEntity(size_t *size); 114*7c568831SAndroid Build Coastguard Worker 115*7c568831SAndroid Build Coastguard Worker int 116*7c568831SAndroid Build Coastguard Worker xmlFuzzResourceLoader(void *data, const char *URL, const char *ID, 117*7c568831SAndroid Build Coastguard Worker xmlResourceType type, int flags, xmlParserInputPtr *out); 118*7c568831SAndroid Build Coastguard Worker 119*7c568831SAndroid Build Coastguard Worker xmlParserInputPtr 120*7c568831SAndroid Build Coastguard Worker xmlFuzzEntityLoader(const char *URL, const char *ID, xmlParserCtxtPtr ctxt); 121*7c568831SAndroid Build Coastguard Worker 122*7c568831SAndroid Build Coastguard Worker char * 123*7c568831SAndroid Build Coastguard Worker xmlSlurpFile(const char *path, size_t *size); 124*7c568831SAndroid Build Coastguard Worker 125*7c568831SAndroid Build Coastguard Worker #ifdef __cplusplus 126*7c568831SAndroid Build Coastguard Worker } 127*7c568831SAndroid Build Coastguard Worker #endif 128*7c568831SAndroid Build Coastguard Worker 129*7c568831SAndroid Build Coastguard Worker #endif /* __XML_FUZZERCOMMON_H__ */ 130*7c568831SAndroid Build Coastguard Worker 131