pub enum RangeSmuggleVariant {
EmptyRangeSet,
ReversedFirstLast,
OverlappingRanges,
OverLargeLastPosition,
WhitespaceInsideRange,
SuffixLengthAsNegativePosition,
NonBytesUnit,
DuplicateHeaderFirstWinsBenign,
}Expand description
Range-header smuggle variants — each surfaces a distinct RFC 7233 parser-divergence seam.
Variants§
EmptyRangeSet
Range: bytes= — empty range-set. RFC says 400/416; lax
servers serve the whole resource as if no Range was set.
ReversedFirstLast
Range: bytes=last-first (e.g. bytes=100-0). Strictly
416; lax servers swap.
OverlappingRanges
Range: bytes=0-99,50-149 — overlapping spans. Coalesce vs
multipart vs reject differential.
OverLargeLastPosition
Range: bytes=0-<gigabyte> — over-large last-byte position.
Servers that pre-allocate OOM; capped at a sane ceiling
(SAFE_LARGE_LAST_POS) so wafrift itself doesn’t enable
denial-of-service attacks on authorized targets.
WhitespaceInsideRange
Range: bytes= 0-99 (leading whitespace after =) or
bytes=0 -99 (whitespace around -). RFC says no WS;
lenient parsers strip.
SuffixLengthAsNegativePosition
Range: bytes=-1000 — suffix range; some implementations
misread as “byte position -1000” leading to underflow.
NonBytesUnit
Range: pages=0-9 — non-bytes unit. RFC allows; only
bytes is universal. Probes which side rejects.
DuplicateHeaderFirstWinsBenign
Two Range: headers — first benign, second smuggle. nginx
keeps first, Apache last → differential.
Trait Implementations§
Source§impl Clone for RangeSmuggleVariant
impl Clone for RangeSmuggleVariant
Source§fn clone(&self) -> RangeSmuggleVariant
fn clone(&self) -> RangeSmuggleVariant
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for RangeSmuggleVariant
Source§impl Debug for RangeSmuggleVariant
impl Debug for RangeSmuggleVariant
impl Eq for RangeSmuggleVariant
Source§impl Hash for RangeSmuggleVariant
impl Hash for RangeSmuggleVariant
Source§impl PartialEq for RangeSmuggleVariant
impl PartialEq for RangeSmuggleVariant
Source§fn eq(&self, other: &RangeSmuggleVariant) -> bool
fn eq(&self, other: &RangeSmuggleVariant) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for RangeSmuggleVariant
Auto Trait Implementations§
impl Freeze for RangeSmuggleVariant
impl RefUnwindSafe for RangeSmuggleVariant
impl Send for RangeSmuggleVariant
impl Sync for RangeSmuggleVariant
impl Unpin for RangeSmuggleVariant
impl UnsafeUnpin for RangeSmuggleVariant
impl UnwindSafe for RangeSmuggleVariant
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.