Edit

kc3-lang/libxml2/fuzz/fuzz.h

Branch :

  • Show log

    Commit

  • Author : Nick Wellnhofer
    Date : 2024-04-16 13:24:12
    Hash : b62ccf7f
    Message : fuzz: Add fuzzer for XML reader API

  • fuzz/fuzz.h
  • /*
     * fuzz.h: Common functions and macros for fuzzing.
     *
     * See Copyright for the status of this software.
     */
    
    #ifndef __XML_FUZZERCOMMON_H__
    #define __XML_FUZZERCOMMON_H__
    
    #include <stddef.h>
    #include <stdio.h>
    #include <libxml/parser.h>
    
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    #if defined(LIBXML_HTML_ENABLED)
      #define HAVE_HTML_FUZZER
    #endif
    #if defined(LIBXML_READER_ENABLED)
      #define HAVE_READER_FUZZER
    #endif
    #if defined(LIBXML_REGEXP_ENABLED)
      #define HAVE_REGEXP_FUZZER
    #endif
    #if defined(LIBXML_SCHEMAS_ENABLED)
      #define HAVE_SCHEMA_FUZZER
    #endif
    #if 1
      #define HAVE_URI_FUZZER
    #endif
    #if defined(LIBXML_VALID_ENABLED)
      #define HAVE_VALID_FUZZER
    #endif
    #if defined(LIBXML_XINCLUDE_ENABLED)
      #define HAVE_XINCLUDE_FUZZER
    #endif
    #if 1
      #define HAVE_XML_FUZZER
    #endif
    #if defined(LIBXML_XPTR_ENABLED)
      #define HAVE_XPATH_FUZZER
    #endif
    
    int
    LLVMFuzzerInitialize(int *argc, char ***argv);
    
    int
    LLVMFuzzerTestOneInput(const char *data, size_t size);
    
    void
    xmlFuzzErrorFunc(void *ctx ATTRIBUTE_UNUSED, const char *msg ATTRIBUTE_UNUSED,
                     ...);
    
    void
    xmlFuzzMemSetup(void);
    
    void
    xmlFuzzMemSetLimit(size_t limit);
    
    int
    xmlFuzzMallocFailed(void);
    
    void
    xmlFuzzResetMallocFailed(void);
    
    void
    xmlFuzzCheckMallocFailure(const char *func, int expect);
    
    void
    xmlFuzzDataInit(const char *data, size_t size);
    
    void
    xmlFuzzDataCleanup(void);
    
    void
    xmlFuzzWriteInt(FILE *out, size_t v, int size);
    
    size_t
    xmlFuzzReadInt(int size);
    
    size_t
    xmlFuzzBytesRemaining(void);
    
    const char *
    xmlFuzzReadRemaining(size_t *size);
    
    void
    xmlFuzzWriteString(FILE *out, const char *str);
    
    const char *
    xmlFuzzReadString(size_t *size);
    
    void
    xmlFuzzReadEntities(void);
    
    const char *
    xmlFuzzMainUrl(void);
    
    const char *
    xmlFuzzMainEntity(size_t *size);
    
    xmlParserInputPtr
    xmlFuzzEntityLoader(const char *URL, const char *ID, xmlParserCtxtPtr ctxt);
    
    char *
    xmlSlurpFile(const char *path, size_t *size);
    
    #ifdef __cplusplus
    }
    #endif
    
    #endif /* __XML_FUZZERCOMMON_H__ */