From 76e120ab15f6ac96df1dcad7c91dd7c8e30df6c4 Mon Sep 17 00:00:00 2001 From: "John T. Wodder II" Date: Thu, 8 Feb 2024 10:40:31 -0500 Subject: [PATCH] Better handling of undecodable Depth headers --- CHANGELOG.md | 5 +++++ src/dav/util.rs | 8 ++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a88434..92a7fa5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +In Development +-------------- +- Respond to undecodable "Depth" header values with a 400 response instead of + acting like no value was specified + v0.2.0 (2024-02-07) ------------------- - Serve Zarr entries via manifests from diff --git a/src/dav/util.rs b/src/dav/util.rs index 6dc8f18..6693837 100644 --- a/src/dav/util.rs +++ b/src/dav/util.rs @@ -78,10 +78,10 @@ impl FromRequestParts for FiniteDepth { type Rejection = Response; async fn from_request_parts(parts: &mut Parts, _state: &S) -> Result { - match parts.headers.get("Depth").and_then(|v| v.to_str().ok()) { - Some("0") => Ok(FiniteDepth::Zero), - Some("1") => Ok(FiniteDepth::One), - Some("infinity") | None => Err(( + match parts.headers.get("Depth").map(|v| v.to_str()) { + Some(Ok("0")) => Ok(FiniteDepth::Zero), + Some(Ok("1")) => Ok(FiniteDepth::One), + Some(Ok("infinity")) | None => Err(( StatusCode::FORBIDDEN, [(CONTENT_TYPE, DAV_XML_CONTENT_TYPE)], INFINITE_DEPTH_RESPONSE,