micro-http: unsigned Content-Length...
...and a bunch of fixes for unchecked unsigned arithmetic in connection.rs. Added more unit tests too that exercise failure cases for over/underflows in mathematic operations. Fixes #1977 Signed-off-by: Alexandra Iordache <aghecen@amazon.com> Signed-off-by: YUAN LYU <lyuyuan92@gmail.com>
This commit is contained in:
committed by
Adrian Catangiu
parent
48b8f179c8
commit
88de0ed16b
@@ -16,6 +16,10 @@ pub mod ascii {
|
||||
/// Errors associated with parsing the HTTP Request from a u8 slice.
|
||||
#[derive(Debug, PartialEq)]
|
||||
pub enum RequestError {
|
||||
/// No request was pending while the request body was being parsed.
|
||||
BodyWithoutPendingRequest,
|
||||
/// No request was pending while the request headers were being parsed.
|
||||
HeadersWithoutPendingRequest,
|
||||
/// The HTTP Method is not supported or it is invalid.
|
||||
InvalidHttpMethod(&'static str),
|
||||
/// Request URI is invalid.
|
||||
@@ -37,6 +41,14 @@ pub enum RequestError {
|
||||
impl Display for RequestError {
|
||||
fn fmt(&self, f: &mut Formatter) -> Result<(), Error> {
|
||||
match self {
|
||||
Self::BodyWithoutPendingRequest => write!(
|
||||
f,
|
||||
"No request was pending while the request body was being parsed."
|
||||
),
|
||||
Self::HeadersWithoutPendingRequest => write!(
|
||||
f,
|
||||
"No request was pending while the request headers were being parsed."
|
||||
),
|
||||
Self::InvalidHttpMethod(inner) => write!(f, "Invalid HTTP Method: {}", inner),
|
||||
Self::InvalidUri(inner) => write!(f, "Invalid URI: {}", inner),
|
||||
Self::InvalidHttpVersion(inner) => write!(f, "Invalid HTTP Version: {}", inner),
|
||||
@@ -322,6 +334,14 @@ mod tests {
|
||||
|
||||
#[test]
|
||||
fn test_display_request_error() {
|
||||
assert_eq!(
|
||||
format!("{}", RequestError::BodyWithoutPendingRequest),
|
||||
"No request was pending while the request body was being parsed."
|
||||
);
|
||||
assert_eq!(
|
||||
format!("{}", RequestError::HeadersWithoutPendingRequest),
|
||||
"No request was pending while the request headers were being parsed."
|
||||
);
|
||||
assert_eq!(
|
||||
format!("{}", RequestError::InvalidHeader),
|
||||
"Invalid header."
|
||||
|
||||
Reference in New Issue
Block a user