Donner SVG 0.8.0-pre
SVG editor and embeddable C⁠+⁠+⁠20 engine.
Loading...
Searching...
No Matches
donner::svg::components::ParsedPayloadResourceBudget Class Reference

Bounds dynamic payload retained while parsing one untrusted SVG document. More...

#include "donner/svg/components/ParsedPayloadResourceBudget.h"

Classes

struct  Limits
struct  SecurityStats

Public Types

enum class  Category {
  Attribute ,
  Stylesheet ,
  ProjectedText
}

Public Member Functions

 ParsedPayloadResourceBudget (Limits limits, std::shared_ptr< DocumentResourceFamilyBudget > family=nullptr)
 ParsedPayloadResourceBudget (const ParsedPayloadResourceBudget &)=delete
ParsedPayloadResourceBudget & operator= (const ParsedPayloadResourceBudget &)=delete
 ParsedPayloadResourceBudget (ParsedPayloadResourceBudget &&other) noexcept
ParsedPayloadResourceBudget & operator= (ParsedPayloadResourceBudget &&)=delete
bool canReserve (Entity entity, std::size_t bytes, Category category) const
 Return whether replacing one entity/category reservation would fit the local envelope.
bool reserve (Entity entity, std::size_t bytes, Category category)
 Atomically replace one entity/category reservation.
void release (Entity entity)
 Release every parsed-payload reservation owned by one entity.
bool reserve (std::size_t bytes, Category category)
 Add an unowned reservation for callers whose payload has no document entity.
void recordRejection ()
 Record a rejected representation whose size cannot safely be expressed or retained.
const SecurityStatssecurityStats () const

Static Public Member Functions

static std::optional< std::size_t > estimateAttributeBytes (std::size_t sourceBytes, std::size_t attributeCount)
 Estimate dynamic representation bytes retained by parsed SVG attributes.
static std::optional< std::size_t > estimateStylesheetPreflightBytes (std::size_t sourceBytes, std::size_t projectedSourceBytes)
 Conservative pre-parse bound for raw CSS plus all parser-retained representations.

Detailed Description

Bounds dynamic payload retained while parsing one untrusted SVG document.


Class Documentation

◆ donner::svg::components::ParsedPayloadResourceBudget::Limits

struct donner::svg::components::ParsedPayloadResourceBudget::Limits
Class Members
size_t maximumRetainedBytes = 64 * 1024 * 1024

◆ donner::svg::components::ParsedPayloadResourceBudget::SecurityStats

struct donner::svg::components::ParsedPayloadResourceBudget::SecurityStats
Class Members
size_t attributeBytes = 0
size_t projectedTextBytes = 0
bool rejected = false
size_t rejectedReservations = 0
size_t retainedBytes = 0
size_t stylesheetBytes = 0

The documentation for this class was generated from the following file: