struct LoopDetector {
depth: u8,
references: u8,
}
Expand description
An entity loop detector.
Limits:
- Entities depth is 10.
- Maximum number of entity references per entity reference is 255.
Basically, if a text or an attribute has an entity reference and this reference has more than 10 nested references - this is an error.
This is useful for simple loops like:
<!ENTITY a '&b;'>
<!ENTITY b '&a;'>
And, if a text or an attribute has an entity reference and it references more than 255 references - this is an error.
This is useful for cases like billion laughs attack, where depth can be pretty small, but the number of references is exponentially increasing:
<!ENTITY lol "lol">
<!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
<!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;">
<!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
<!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
Fields§
§depth: u8
References depth.
references: u8
Number of references resolved by the root reference.
Implementations§
Trait Implementations§
Source§impl Default for LoopDetector
impl Default for LoopDetector
Source§fn default() -> LoopDetector
fn default() -> LoopDetector
Returns the “default value” for a type. Read more
Auto Trait Implementations§
impl Freeze for LoopDetector
impl RefUnwindSafe for LoopDetector
impl Send for LoopDetector
impl Sync for LoopDetector
impl Unpin for LoopDetector
impl UnwindSafe for LoopDetector
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more