Donner
C++20 SVG rendering library
Loading...
Searching...
No Matches
donner::xml Namespace Reference

XML parsing and document model support, top-level objects are donner::xml::XMLParser and donner::xml::XMLDocument. More...

Classes

class  XMLDocument
 Represents an XML document, which holds a collection of XMLNode as the document tree. More...
class  XMLNode
 Represents an XML element belonging to an XMLDocument. More...
class  XMLParser
 Parses an XML document from a string. More...
struct  XMLQualifiedName
 Represents an XML attribute name with an optional namespace. More...
struct  XMLQualifiedNameRef
 Reference type for XMLQualifiedName, to pass the value to APIs without needing to allocate an RcString. More...
class  XMLDocumentContext
 Holds global state of an XML document, such as the root element. More...
class  XMLNamespaceContext
 Manages XML namespace state for a document. More...
struct  AttributesComponent
 Stores XML attribute values. More...
class  TreeComponent
 Stores the tree structure for an XML element, such as the parent, children, and siblings. More...
struct  ParseError
 Error context for a failed parse, such as the error reason, line, and character offset. More...
class  ParseResult
 A parser result, which may contain a result of type T, or an error, or both. More...

Functions

int LLVMFuzzerTestOneInput (const uint8_t *data, size_t size)
 Fuzzer entry point, see https://llvm.org/docs/LibFuzzer.html.
void DumpTree (const XMLNode &element, int depth)

Detailed Description

XML parsing and document model support, top-level objects are donner::xml::XMLParser and donner::xml::XMLDocument.

A structured libFuzzer target for donner::xml::XMLParser that generates syntactically-correct XML with random DOCTYPE/entity constructs, attributes, comments, CDATA, processing instructions, and nested elements.

The goal is to reach deep paths such as consumeAndExpandEntities() and to validate the mitigation against exponential-growth entity attacks (e.g. "Billion Laughs").