aboutsummaryrefslogtreecommitdiff
path: root/src/api/common
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/common')
-rw-r--r--src/api/common/signature/streaming.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/api/common/signature/streaming.rs b/src/api/common/signature/streaming.rs
index 17d3a802..75f3bf80 100644
--- a/src/api/common/signature/streaming.rs
+++ b/src/api/common/signature/streaming.rs
@@ -189,7 +189,7 @@ mod payload {
use nom::bytes::streaming::{tag, take_while};
use nom::character::streaming::hex_digit1;
- use nom::combinator::map_res;
+ use nom::combinator::{map_res, opt};
use nom::number::streaming::hex_u32;
macro_rules! try_parse {
@@ -266,6 +266,11 @@ mod payload {
let (input, header_value) = try_parse!(take_while(
|c: u8| c.is_ascii_alphanumeric() || b"+/=".contains(&c)
)(input));
+
+ // Possible '\n' after the header value, depends on clients
+ // https://docs.aws.amazon.com/AmazonS3/latest/userguide/checking-object-integrity.html
+ let (input, _) = try_parse!(opt(tag(b"\n"))(input));
+
let (input, _) = try_parse!(tag(b"\r\n")(input));
Ok((