Skip to content

Commit 83a74fd

Browse files
fix: validate end < size when parsing Content-Range headers
The `FromStr` impl for `HttpContentRange` constructed `Bound` directly, bypassing the `end < size` validation that `Bound::new()` enforces. Headers like `bytes 10-20/15` were incorrectly accepted.
1 parent a6c9776 commit 83a74fd

1 file changed

Lines changed: 9 additions & 4 deletions

File tree

src/headers/content_range.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,15 @@ impl FromStr for HttpContentRange {
8686
(ParsedRange::Range(range), ParsedSize::Star) => {
8787
Ok(Self::Bound(Bound { range, size: None }))
8888
}
89-
(ParsedRange::Range(range), ParsedSize::Value(size)) => Ok(Self::Bound(Bound {
90-
range,
91-
size: Some(size),
92-
})),
89+
(ParsedRange::Range(range), ParsedSize::Value(size)) if range.end() < size => {
90+
Ok(Self::Bound(Bound {
91+
range,
92+
size: Some(size),
93+
}))
94+
}
95+
(ParsedRange::Range(_), ParsedSize::Value(_)) => {
96+
Err(ParseHttpRangeOrContentRangeError::MalformedRange)
97+
}
9398
}
9499
}
95100
}

0 commit comments

Comments
 (0)