Bounds dynamic payload retained while parsing one untrusted SVG document.
More...
#include "donner/svg/components/ParsedPayloadResourceBudget.h"
|
|
std::size_t | maximumRetainedBytes () const |
| | Current local retained-byte ceiling for recovery-policy checks.
|
|
std::shared_ptr< DocumentResourceFamilyBudget > | familyBudget () const |
| | Owning identity of the shared family envelope used by this local budget.
|
| | ParsedPayloadResourceBudget (Limits limits, std::shared_ptr< DocumentResourceFamilyBudget > family=nullptr) |
| | Create a payload budget with a local ceiling and optional shared family budget.
|
|
| ParsedPayloadResourceBudget (const ParsedPayloadResourceBudget &)=delete |
|
ParsedPayloadResourceBudget & | operator= (const ParsedPayloadResourceBudget &)=delete |
| | ParsedPayloadResourceBudget (ParsedPayloadResourceBudget &&other) noexcept |
| | Transfer reservations without releasing the shared family's retained bytes.
|
|
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 SecurityStats & | securityStats () const |
| | Current category accounting and cumulative rejection state.
|
|
|
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.
|
Bounds dynamic payload retained while parsing one untrusted SVG document.
◆ donner::svg::components::ParsedPayloadResourceBudget::Limits
| struct donner::svg::components::ParsedPayloadResourceBudget::Limits |
Local ceiling for all retained parsed payloads.
| Class Members |
|
size_t |
maximumRetainedBytes = 64 * 1024 * 1024 |
Maximum aggregate bytes retained across payload categories. |
◆ donner::svg::components::ParsedPayloadResourceBudget::SecurityStats
| struct donner::svg::components::ParsedPayloadResourceBudget::SecurityStats |
Current category bytes and cumulative admission failures.
| Class Members |
|
size_t |
attributeBytes = 0 |
Bytes attributed to XML attributes. |
|
size_t |
projectedTextBytes = 0 |
Bytes attributed to projected SVG text. |
|
bool |
rejected = false |
Whether any request was rejected. |
|
size_t |
rejectedReservations = 0 |
Number of failed or unrepresentable requests. |
|
size_t |
retainedBytes = 0 |
Aggregate payload bytes currently reserved. |
|
size_t |
stylesheetBytes = 0 |
Bytes attributed to stylesheets. |
◆ Category
Independently attributed parsed payload categories.
| Enumerator |
|---|
| Attribute | Parsed XML attribute representations.
|
| Stylesheet | Parsed stylesheet representations.
|
| ProjectedText | SVG text projected from the XML tree.
|
◆ ParsedPayloadResourceBudget() [1/2]
Create a payload budget with a local ceiling and optional shared family budget.
- Parameters
-
| limits | Local retained-byte limit. |
| family | Shared document resource budget, or null for local accounting only. |
◆ ParsedPayloadResourceBudget() [2/2]
| donner::svg::components::ParsedPayloadResourceBudget::ParsedPayloadResourceBudget |
( |
ParsedPayloadResourceBudget && | other | ) |
|
|
inlinenoexcept |
Transfer reservations without releasing the shared family's retained bytes.
- Parameters
-
| other | Budget whose reservations are moved into this object. |
The documentation for this class was generated from the following file: