pub enum IndexError {
TooShort(usize),
BadMagic {
got: [u8; 4],
},
UnsupportedVersion(u32),
EntryCountMismatch {
claimed: u64,
remaining: usize,
},
EntryOverflow {
ooff: u64,
osize: u64,
coff: u64,
csize: u64,
},
TooManyFrames {
got: u64,
max: u64,
},
EtagTooLong {
got: u32,
max: u32,
},
NonMonotonicEntries {
prev_original_end: u64,
curr_original_offset: u64,
prev_compressed_end: u64,
curr_compressed_offset: u64,
},
}Variants§
TooShort(usize)
BadMagic
UnsupportedVersion(u32)
EntryCountMismatch
EntryOverflow
v0.8.15 H-a: an entry’s original_offset + original_size or
compressed_offset + compressed_size overflows u64. The
downstream binary_search_by / lookup_range machinery
assumes monotonically-increasing offsets — overflow would let
a forged sidecar drive the range planner into garbage state.
TooManyFrames
v0.8.15 H-c: per-sidecar entry-count cap. Pairs with the v0.8.12
#124 Vec::with_capacity clamp — refuses pathologically-large
n at parse time even before the expected_remaining == input.len()
guard, so a 32-bit target can’t be tricked into running 0..n
past the buffer.
EtagTooLong
v0.8.15 H-c: etag_len exceeds the maximum addressable size on
this target (32-bit) or the operator-configured cap.
NonMonotonicEntries
v0.8.16 F-2: consecutive entries are not in non-decreasing
order. binary_search_by / lookup_range rely on the
invariant that entries[i+1].original_offset >= entries[i].original_end() (and the same for compressed_*).
A forged sidecar violating that lets a Range GET drive
RangePlan.byte_end_exclusive to a u64-wrapped value.
Trait Implementations§
Source§impl Debug for IndexError
impl Debug for IndexError
Source§impl Display for IndexError
impl Display for IndexError
Source§impl Error for IndexError
impl Error for IndexError
1.30.0 · Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()