xref: /aosp_15_r20/external/libxml2/fuzz/fuzz.h (revision 7c5688314b92172186c154356a6374bf7684c3ca)
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